

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 6.00.0366 */
/* at Wed Dec 23 17:55:23 2009
 */
/* Compiler settings for .\jmapidl.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING(  )

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __jmapidl_h__
#define __jmapidl_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __ICoordinateSystem_FWD_DEFINED__
#define __ICoordinateSystem_FWD_DEFINED__
typedef interface ICoordinateSystem ICoordinateSystem;
#endif 	/* __ICoordinateSystem_FWD_DEFINED__ */


#ifndef __IBoundingBox_FWD_DEFINED__
#define __IBoundingBox_FWD_DEFINED__
typedef interface IBoundingBox IBoundingBox;
#endif 	/* __IBoundingBox_FWD_DEFINED__ */


#ifndef __IGeometry_FWD_DEFINED__
#define __IGeometry_FWD_DEFINED__
typedef interface IGeometry IGeometry;
#endif 	/* __IGeometry_FWD_DEFINED__ */


#ifndef __ICurve_FWD_DEFINED__
#define __ICurve_FWD_DEFINED__
typedef interface ICurve ICurve;
#endif 	/* __ICurve_FWD_DEFINED__ */


#ifndef __ILineString_FWD_DEFINED__
#define __ILineString_FWD_DEFINED__
typedef interface ILineString ILineString;
#endif 	/* __ILineString_FWD_DEFINED__ */


#ifndef __ILinearRing_FWD_DEFINED__
#define __ILinearRing_FWD_DEFINED__
typedef interface ILinearRing ILinearRing;
#endif 	/* __ILinearRing_FWD_DEFINED__ */


#ifndef __IPoint_FWD_DEFINED__
#define __IPoint_FWD_DEFINED__
typedef interface IPoint IPoint;
#endif 	/* __IPoint_FWD_DEFINED__ */


#ifndef __IPoint3D_FWD_DEFINED__
#define __IPoint3D_FWD_DEFINED__
typedef interface IPoint3D IPoint3D;
#endif 	/* __IPoint3D_FWD_DEFINED__ */


#ifndef __ISurface_FWD_DEFINED__
#define __ISurface_FWD_DEFINED__
typedef interface ISurface ISurface;
#endif 	/* __ISurface_FWD_DEFINED__ */


#ifndef __IPolygon_FWD_DEFINED__
#define __IPolygon_FWD_DEFINED__
typedef interface IPolygon IPolygon;
#endif 	/* __IPolygon_FWD_DEFINED__ */


#ifndef __IGeometryCollection_FWD_DEFINED__
#define __IGeometryCollection_FWD_DEFINED__
typedef interface IGeometryCollection IGeometryCollection;
#endif 	/* __IGeometryCollection_FWD_DEFINED__ */


#ifndef __IMultiCurve_FWD_DEFINED__
#define __IMultiCurve_FWD_DEFINED__
typedef interface IMultiCurve IMultiCurve;
#endif 	/* __IMultiCurve_FWD_DEFINED__ */


#ifndef __IMultiLineString_FWD_DEFINED__
#define __IMultiLineString_FWD_DEFINED__
typedef interface IMultiLineString IMultiLineString;
#endif 	/* __IMultiLineString_FWD_DEFINED__ */


#ifndef __IMultiPoint_FWD_DEFINED__
#define __IMultiPoint_FWD_DEFINED__
typedef interface IMultiPoint IMultiPoint;
#endif 	/* __IMultiPoint_FWD_DEFINED__ */


#ifndef __IMultiSurface_FWD_DEFINED__
#define __IMultiSurface_FWD_DEFINED__
typedef interface IMultiSurface IMultiSurface;
#endif 	/* __IMultiSurface_FWD_DEFINED__ */


#ifndef __IMultiPolygon_FWD_DEFINED__
#define __IMultiPolygon_FWD_DEFINED__
typedef interface IMultiPolygon IMultiPolygon;
#endif 	/* __IMultiPolygon_FWD_DEFINED__ */


#ifndef __IEnumXX_FWD_DEFINED__
#define __IEnumXX_FWD_DEFINED__
typedef interface IEnumXX IEnumXX;
#endif 	/* __IEnumXX_FWD_DEFINED__ */


#ifndef __IGeometries_FWD_DEFINED__
#define __IGeometries_FWD_DEFINED__
typedef interface IGeometries IGeometries;
#endif 	/* __IGeometries_FWD_DEFINED__ */


#ifndef __IPoints_FWD_DEFINED__
#define __IPoints_FWD_DEFINED__
typedef interface IPoints IPoints;
#endif 	/* __IPoints_FWD_DEFINED__ */


#ifndef __IBoundingBoxs_FWD_DEFINED__
#define __IBoundingBoxs_FWD_DEFINED__
typedef interface IBoundingBoxs IBoundingBoxs;
#endif 	/* __IBoundingBoxs_FWD_DEFINED__ */


#ifndef __IPolygons_FWD_DEFINED__
#define __IPolygons_FWD_DEFINED__
typedef interface IPolygons IPolygons;
#endif 	/* __IPolygons_FWD_DEFINED__ */


#ifndef __ILineStrings_FWD_DEFINED__
#define __ILineStrings_FWD_DEFINED__
typedef interface ILineStrings ILineStrings;
#endif 	/* __ILineStrings_FWD_DEFINED__ */


#ifndef __ILinearRings_FWD_DEFINED__
#define __ILinearRings_FWD_DEFINED__
typedef interface ILinearRings ILinearRings;
#endif 	/* __ILinearRings_FWD_DEFINED__ */


#ifndef __ILayers_FWD_DEFINED__
#define __ILayers_FWD_DEFINED__
typedef interface ILayers ILayers;
#endif 	/* __ILayers_FWD_DEFINED__ */


#ifndef __ILayer_FWD_DEFINED__
#define __ILayer_FWD_DEFINED__
typedef interface ILayer ILayer;
#endif 	/* __ILayer_FWD_DEFINED__ */


#ifndef __IFeatureDataRow_FWD_DEFINED__
#define __IFeatureDataRow_FWD_DEFINED__
typedef interface IFeatureDataRow IFeatureDataRow;
#endif 	/* __IFeatureDataRow_FWD_DEFINED__ */


#ifndef __IFeatureDataSet_FWD_DEFINED__
#define __IFeatureDataSet_FWD_DEFINED__
typedef interface IFeatureDataSet IFeatureDataSet;
#endif 	/* __IFeatureDataSet_FWD_DEFINED__ */


#ifndef __IFeatureDataTable_FWD_DEFINED__
#define __IFeatureDataTable_FWD_DEFINED__
typedef interface IFeatureDataTable IFeatureDataTable;
#endif 	/* __IFeatureDataTable_FWD_DEFINED__ */


#ifndef __IProvider_FWD_DEFINED__
#define __IProvider_FWD_DEFINED__
typedef interface IProvider IProvider;
#endif 	/* __IProvider_FWD_DEFINED__ */


#ifndef __IStyle_FWD_DEFINED__
#define __IStyle_FWD_DEFINED__
typedef interface IStyle IStyle;
#endif 	/* __IStyle_FWD_DEFINED__ */


#ifndef __IVectorStyle_FWD_DEFINED__
#define __IVectorStyle_FWD_DEFINED__
typedef interface IVectorStyle IVectorStyle;
#endif 	/* __IVectorStyle_FWD_DEFINED__ */


#ifndef __IMap_FWD_DEFINED__
#define __IMap_FWD_DEFINED__
typedef interface IMap IMap;
#endif 	/* __IMap_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "maptypes.h"

#ifdef __cplusplus
extern "C"{
#endif 

void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * ); 

/* interface __MIDL_itf_jmapidl_0000 */
/* [local] */ 

































extern RPC_IF_HANDLE __MIDL_itf_jmapidl_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_jmapidl_0000_v0_0_s_ifspec;

#ifndef __ICoordinateSystem_INTERFACE_DEFINED__
#define __ICoordinateSystem_INTERFACE_DEFINED__

/* interface ICoordinateSystem */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICoordinateSystem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2A8A1991-01DD-482c-A388-F4B004F140DE")
    ICoordinateSystem : public IDispatch
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct ICoordinateSystemVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICoordinateSystem * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICoordinateSystem * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICoordinateSystem * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICoordinateSystem * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICoordinateSystem * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICoordinateSystem * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICoordinateSystem * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        END_INTERFACE
    } ICoordinateSystemVtbl;

    interface ICoordinateSystem
    {
        CONST_VTBL struct ICoordinateSystemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICoordinateSystem_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ICoordinateSystem_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ICoordinateSystem_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ICoordinateSystem_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ICoordinateSystem_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ICoordinateSystem_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ICoordinateSystem_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICoordinateSystem_INTERFACE_DEFINED__ */


#ifndef __IBoundingBox_INTERFACE_DEFINED__
#define __IBoundingBox_INTERFACE_DEFINED__

/* interface IBoundingBox */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IBoundingBox;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("13C28E52-A0E9-4e2b-A9B7-8281A802BC5B")
    IBoundingBox : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Bottom( 
            /* [retval][out] */ double *Bottom) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Top( 
            /* [retval][out] */ double *Top) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Left( 
            /* [retval][out] */ double *Left) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Right( 
            /* [retval][out] */ double *Right) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LongestAxis( 
            /* [retval][out] */ int *LongestAxis) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Width( 
            /* [retval][out] */ double *Width) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Height( 
            /* [retval][out] */ double *Height) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Min( 
            /* [retval][out] */ IPoint **Min) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Min( 
            /* [in] */ IPoint *Min) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Max( 
            /* [retval][out] */ IPoint **Max) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Max( 
            /* [in] */ IPoint *Max) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( 
            /* [in] */ double minX,
            /* [in] */ double minY,
            /* [in] */ double maxX,
            /* [in] */ double maxY) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init2( 
            /* [in] */ IPoint *lowerLeft,
            /* [in] */ IPoint *upperRight) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init3( 
            /* [in] */ IBoundingBoxs *boundingBoxs) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init4( 
            /* [in] */ IGeometries *geometries) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CheckMax( 
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Contains( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Contains2( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Contains3( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Distance( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Distance2( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetArea( 
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCentroid( 
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetIntersectionArea( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Grow( 
            /* [in] */ double amount,
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Grow2( 
            /* [in] */ double amountInX,
            /* [in] */ double amountInY,
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Intersects( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Join( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IBoundingBox **JoinedBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Touches( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Touches2( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Touches3( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Offset( 
            /* [in] */ IPoint *point) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IBoundingBoxVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IBoundingBox * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IBoundingBox * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IBoundingBox * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IBoundingBox * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IBoundingBox * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IBoundingBox * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IBoundingBox * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Bottom )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Bottom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Top )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Top);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Left )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Left);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Right )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Right);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LongestAxis )( 
            IBoundingBox * This,
            /* [retval][out] */ int *LongestAxis);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Width )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Width);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Height )( 
            IBoundingBox * This,
            /* [retval][out] */ double *Height);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Min )( 
            IBoundingBox * This,
            /* [retval][out] */ IPoint **Min);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Min )( 
            IBoundingBox * This,
            /* [in] */ IPoint *Min);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Max )( 
            IBoundingBox * This,
            /* [retval][out] */ IPoint **Max);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Max )( 
            IBoundingBox * This,
            /* [in] */ IPoint *Max);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( 
            IBoundingBox * This,
            /* [in] */ double minX,
            /* [in] */ double minY,
            /* [in] */ double maxX,
            /* [in] */ double maxY);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init2 )( 
            IBoundingBox * This,
            /* [in] */ IPoint *lowerLeft,
            /* [in] */ IPoint *upperRight);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init3 )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBoxs *boundingBoxs);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init4 )( 
            IBoundingBox * This,
            /* [in] */ IGeometries *geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CheckMax )( 
            IBoundingBox * This,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IBoundingBox * This,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Contains )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Contains2 )( 
            IBoundingBox * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Contains3 )( 
            IBoundingBox * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Distance )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Distance2 )( 
            IBoundingBox * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetArea )( 
            IBoundingBox * This,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCentroid )( 
            IBoundingBox * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetIntersectionArea )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Grow )( 
            IBoundingBox * This,
            /* [in] */ double amount,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Grow2 )( 
            IBoundingBox * This,
            /* [in] */ double amountInX,
            /* [in] */ double amountInY,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Intersects )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Join )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IBoundingBox **JoinedBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches )( 
            IBoundingBox * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches2 )( 
            IBoundingBox * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches3 )( 
            IBoundingBox * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Offset )( 
            IBoundingBox * This,
            /* [in] */ IPoint *point);
        
        END_INTERFACE
    } IBoundingBoxVtbl;

    interface IBoundingBox
    {
        CONST_VTBL struct IBoundingBoxVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IBoundingBox_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IBoundingBox_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IBoundingBox_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IBoundingBox_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IBoundingBox_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IBoundingBox_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IBoundingBox_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IBoundingBox_get_Bottom(This,Bottom)	\
    (This)->lpVtbl -> get_Bottom(This,Bottom)

#define IBoundingBox_get_Top(This,Top)	\
    (This)->lpVtbl -> get_Top(This,Top)

#define IBoundingBox_get_Left(This,Left)	\
    (This)->lpVtbl -> get_Left(This,Left)

#define IBoundingBox_get_Right(This,Right)	\
    (This)->lpVtbl -> get_Right(This,Right)

#define IBoundingBox_get_LongestAxis(This,LongestAxis)	\
    (This)->lpVtbl -> get_LongestAxis(This,LongestAxis)

#define IBoundingBox_get_Width(This,Width)	\
    (This)->lpVtbl -> get_Width(This,Width)

#define IBoundingBox_get_Height(This,Height)	\
    (This)->lpVtbl -> get_Height(This,Height)

#define IBoundingBox_get_Min(This,Min)	\
    (This)->lpVtbl -> get_Min(This,Min)

#define IBoundingBox_put_Min(This,Min)	\
    (This)->lpVtbl -> put_Min(This,Min)

#define IBoundingBox_get_Max(This,Max)	\
    (This)->lpVtbl -> get_Max(This,Max)

#define IBoundingBox_put_Max(This,Max)	\
    (This)->lpVtbl -> put_Max(This,Max)

#define IBoundingBox_Init(This,minX,minY,maxX,maxY)	\
    (This)->lpVtbl -> Init(This,minX,minY,maxX,maxY)

#define IBoundingBox_Init2(This,lowerLeft,upperRight)	\
    (This)->lpVtbl -> Init2(This,lowerLeft,upperRight)

#define IBoundingBox_Init3(This,boundingBoxs)	\
    (This)->lpVtbl -> Init3(This,boundingBoxs)

#define IBoundingBox_Init4(This,geometries)	\
    (This)->lpVtbl -> Init4(This,geometries)

#define IBoundingBox_CheckMax(This,isSuccess)	\
    (This)->lpVtbl -> CheckMax(This,isSuccess)

#define IBoundingBox_Clone(This,boundingBox)	\
    (This)->lpVtbl -> Clone(This,boundingBox)

#define IBoundingBox_Contains(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Contains(This,boundingBox,isSuccess)

#define IBoundingBox_Contains2(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Contains2(This,inGeom,isSuccess)

#define IBoundingBox_Contains3(This,point,isSuccess)	\
    (This)->lpVtbl -> Contains3(This,point,isSuccess)

#define IBoundingBox_Distance(This,boundingBox,doubleRet)	\
    (This)->lpVtbl -> Distance(This,boundingBox,doubleRet)

#define IBoundingBox_Distance2(This,point,doubleRet)	\
    (This)->lpVtbl -> Distance2(This,point,doubleRet)

#define IBoundingBox_Equals(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Equals(This,boundingBox,isSuccess)

#define IBoundingBox_GetArea(This,doubleRet)	\
    (This)->lpVtbl -> GetArea(This,doubleRet)

#define IBoundingBox_GetCentroid(This,point)	\
    (This)->lpVtbl -> GetCentroid(This,point)

#define IBoundingBox_GetIntersectionArea(This,boundingBox,doubleRet)	\
    (This)->lpVtbl -> GetIntersectionArea(This,boundingBox,doubleRet)

#define IBoundingBox_Grow(This,amount,boundingBox)	\
    (This)->lpVtbl -> Grow(This,amount,boundingBox)

#define IBoundingBox_Grow2(This,amountInX,amountInY,boundingBox)	\
    (This)->lpVtbl -> Grow2(This,amountInX,amountInY,boundingBox)

#define IBoundingBox_Intersects(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Intersects(This,boundingBox,isSuccess)

#define IBoundingBox_Join(This,boundingBox,JoinedBox)	\
    (This)->lpVtbl -> Join(This,boundingBox,JoinedBox)

#define IBoundingBox_Touches(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Touches(This,boundingBox,isSuccess)

#define IBoundingBox_Touches2(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Touches2(This,inGeom,isSuccess)

#define IBoundingBox_Touches3(This,point,isSuccess)	\
    (This)->lpVtbl -> Touches3(This,point,isSuccess)

#define IBoundingBox_Offset(This,point)	\
    (This)->lpVtbl -> Offset(This,point)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Bottom_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Bottom);


void __RPC_STUB IBoundingBox_get_Bottom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Top_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Top);


void __RPC_STUB IBoundingBox_get_Top_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Left_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Left);


void __RPC_STUB IBoundingBox_get_Left_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Right_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Right);


void __RPC_STUB IBoundingBox_get_Right_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_LongestAxis_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ int *LongestAxis);


void __RPC_STUB IBoundingBox_get_LongestAxis_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Width_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Width);


void __RPC_STUB IBoundingBox_get_Width_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Height_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *Height);


void __RPC_STUB IBoundingBox_get_Height_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Min_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ IPoint **Min);


void __RPC_STUB IBoundingBox_get_Min_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IBoundingBox_put_Min_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *Min);


void __RPC_STUB IBoundingBox_put_Min_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IBoundingBox_get_Max_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ IPoint **Max);


void __RPC_STUB IBoundingBox_get_Max_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IBoundingBox_put_Max_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *Max);


void __RPC_STUB IBoundingBox_put_Max_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Init_Proxy( 
    IBoundingBox * This,
    /* [in] */ double minX,
    /* [in] */ double minY,
    /* [in] */ double maxX,
    /* [in] */ double maxY);


void __RPC_STUB IBoundingBox_Init_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Init2_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *lowerLeft,
    /* [in] */ IPoint *upperRight);


void __RPC_STUB IBoundingBox_Init2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Init3_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBoxs *boundingBoxs);


void __RPC_STUB IBoundingBox_Init3_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Init4_Proxy( 
    IBoundingBox * This,
    /* [in] */ IGeometries *geometries);


void __RPC_STUB IBoundingBox_Init4_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_CheckMax_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_CheckMax_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Clone_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IBoundingBox_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Contains_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Contains_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Contains2_Proxy( 
    IBoundingBox * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Contains2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Contains3_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Contains3_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Distance_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IBoundingBox_Distance_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Distance2_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IBoundingBox_Distance2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Equals_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_GetArea_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IBoundingBox_GetArea_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_GetCentroid_Proxy( 
    IBoundingBox * This,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IBoundingBox_GetCentroid_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_GetIntersectionArea_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IBoundingBox_GetIntersectionArea_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Grow_Proxy( 
    IBoundingBox * This,
    /* [in] */ double amount,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IBoundingBox_Grow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Grow2_Proxy( 
    IBoundingBox * This,
    /* [in] */ double amountInX,
    /* [in] */ double amountInY,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IBoundingBox_Grow2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Intersects_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Intersects_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Join_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ IBoundingBox **JoinedBox);


void __RPC_STUB IBoundingBox_Join_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Touches_Proxy( 
    IBoundingBox * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Touches_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Touches2_Proxy( 
    IBoundingBox * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Touches2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Touches3_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IBoundingBox_Touches3_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IBoundingBox_Offset_Proxy( 
    IBoundingBox * This,
    /* [in] */ IPoint *point);


void __RPC_STUB IBoundingBox_Offset_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IBoundingBox_INTERFACE_DEFINED__ */


#ifndef __IGeometry_INTERFACE_DEFINED__
#define __IGeometry_INTERFACE_DEFINED__

/* interface IGeometry */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IGeometry;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8CFBF3D1-8BD8-4a91-AA57-11A83DAC8726")
    IGeometry : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_GeomType( 
            /* [retval][out] */ GeometryType *GeomType) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Dimension( 
            /* [retval][out] */ int *Dimension) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SpatialReference( 
            /* [retval][out] */ ICoordinateSystem **SpatialReference) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SpatialReference( 
            /* [in] */ ICoordinateSystem *SpatialReference) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AsBinary( 
            /* [retval][out] */ BYTE **stream) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AsText( 
            /* [retval][out] */ BSTR *stringRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsEmpty( 
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsSimple( 
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Boundary( 
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Envelope( 
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetBoundingBox( 
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Buffer( 
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Intersection( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Difference( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Distance2( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Distance( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ double *doubleRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Union( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Contains( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Crosses( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Disjoint( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Intersects( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OverLaps( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Relate( 
            /* [in] */ IGeometry *inGeom,
            /* [in] */ BSTR stringValue,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Touches( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Within( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Attach( 
            /* [in] */ byte *pAddr) = 0;
        
        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Detach( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IGeometryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IGeometry * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IGeometry * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IGeometry * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IGeometry * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IGeometry * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IGeometry * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IGeometry * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_GeomType )( 
            IGeometry * This,
            /* [retval][out] */ GeometryType *GeomType);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IGeometry * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SpatialReference )( 
            IGeometry * This,
            /* [retval][out] */ ICoordinateSystem **SpatialReference);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SpatialReference )( 
            IGeometry * This,
            /* [in] */ ICoordinateSystem *SpatialReference);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AsBinary )( 
            IGeometry * This,
            /* [retval][out] */ BYTE **stream);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AsText )( 
            IGeometry * This,
            /* [retval][out] */ BSTR *stringRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsEmpty )( 
            IGeometry * This,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsSimple )( 
            IGeometry * This,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Boundary )( 
            IGeometry * This,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Envelope )( 
            IGeometry * This,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetBoundingBox )( 
            IGeometry * This,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Buffer )( 
            IGeometry * This,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Intersection )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IGeometry * This,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Difference )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Distance2 )( 
            IGeometry * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Distance )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ double *doubleRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Union )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Contains )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Crosses )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Disjoint )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Intersects )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OverLaps )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Relate )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [in] */ BSTR stringValue,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Within )( 
            IGeometry * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Attach )( 
            IGeometry * This,
            /* [in] */ byte *pAddr);
        
        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Detach )( 
            IGeometry * This);
        
        END_INTERFACE
    } IGeometryVtbl;

    interface IGeometry
    {
        CONST_VTBL struct IGeometryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IGeometry_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IGeometry_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IGeometry_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IGeometry_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IGeometry_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IGeometry_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IGeometry_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IGeometry_get_GeomType(This,GeomType)	\
    (This)->lpVtbl -> get_GeomType(This,GeomType)

#define IGeometry_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IGeometry_get_SpatialReference(This,SpatialReference)	\
    (This)->lpVtbl -> get_SpatialReference(This,SpatialReference)

#define IGeometry_put_SpatialReference(This,SpatialReference)	\
    (This)->lpVtbl -> put_SpatialReference(This,SpatialReference)

#define IGeometry_AsBinary(This,stream)	\
    (This)->lpVtbl -> AsBinary(This,stream)

#define IGeometry_AsText(This,stringRet)	\
    (This)->lpVtbl -> AsText(This,stringRet)

#define IGeometry_IsEmpty(This,isSuccess)	\
    (This)->lpVtbl -> IsEmpty(This,isSuccess)

#define IGeometry_IsSimple(This,isSuccess)	\
    (This)->lpVtbl -> IsSimple(This,isSuccess)

#define IGeometry_Boundary(This,outGeom)	\
    (This)->lpVtbl -> Boundary(This,outGeom)

#define IGeometry_Envelope(This,outGeom)	\
    (This)->lpVtbl -> Envelope(This,outGeom)

#define IGeometry_GetBoundingBox(This,boundingBox)	\
    (This)->lpVtbl -> GetBoundingBox(This,boundingBox)

#define IGeometry_Buffer(This,outGeom)	\
    (This)->lpVtbl -> Buffer(This,outGeom)

#define IGeometry_Intersection(This,inGeom,outGeom)	\
    (This)->lpVtbl -> Intersection(This,inGeom,outGeom)

#define IGeometry_Clone(This,outGeom)	\
    (This)->lpVtbl -> Clone(This,outGeom)

#define IGeometry_Difference(This,inGeom,outGeom)	\
    (This)->lpVtbl -> Difference(This,inGeom,outGeom)

#define IGeometry_Distance2(This,boundingBox,doubleRet)	\
    (This)->lpVtbl -> Distance2(This,boundingBox,doubleRet)

#define IGeometry_Distance(This,inGeom,doubleRet)	\
    (This)->lpVtbl -> Distance(This,inGeom,doubleRet)

#define IGeometry_Equals(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Equals(This,inGeom,isSuccess)

#define IGeometry_Union(This,inGeom,outGeom)	\
    (This)->lpVtbl -> Union(This,inGeom,outGeom)

#define IGeometry_Contains(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Contains(This,inGeom,isSuccess)

#define IGeometry_Crosses(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Crosses(This,inGeom,isSuccess)

#define IGeometry_Disjoint(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Disjoint(This,inGeom,isSuccess)

#define IGeometry_Intersects(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Intersects(This,inGeom,isSuccess)

#define IGeometry_OverLaps(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> OverLaps(This,inGeom,isSuccess)

#define IGeometry_Relate(This,inGeom,stringValue,isSuccess)	\
    (This)->lpVtbl -> Relate(This,inGeom,stringValue,isSuccess)

#define IGeometry_Touches(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Touches(This,inGeom,isSuccess)

#define IGeometry_Within(This,inGeom,isSuccess)	\
    (This)->lpVtbl -> Within(This,inGeom,isSuccess)

#define IGeometry_Attach(This,pAddr)	\
    (This)->lpVtbl -> Attach(This,pAddr)

#define IGeometry_Detach(This)	\
    (This)->lpVtbl -> Detach(This)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometry_get_GeomType_Proxy( 
    IGeometry * This,
    /* [retval][out] */ GeometryType *GeomType);


void __RPC_STUB IGeometry_get_GeomType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometry_get_Dimension_Proxy( 
    IGeometry * This,
    /* [retval][out] */ int *Dimension);


void __RPC_STUB IGeometry_get_Dimension_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometry_get_SpatialReference_Proxy( 
    IGeometry * This,
    /* [retval][out] */ ICoordinateSystem **SpatialReference);


void __RPC_STUB IGeometry_get_SpatialReference_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IGeometry_put_SpatialReference_Proxy( 
    IGeometry * This,
    /* [in] */ ICoordinateSystem *SpatialReference);


void __RPC_STUB IGeometry_put_SpatialReference_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_AsBinary_Proxy( 
    IGeometry * This,
    /* [retval][out] */ BYTE **stream);


void __RPC_STUB IGeometry_AsBinary_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_AsText_Proxy( 
    IGeometry * This,
    /* [retval][out] */ BSTR *stringRet);


void __RPC_STUB IGeometry_AsText_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_IsEmpty_Proxy( 
    IGeometry * This,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_IsEmpty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_IsSimple_Proxy( 
    IGeometry * This,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_IsSimple_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Boundary_Proxy( 
    IGeometry * This,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Boundary_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Envelope_Proxy( 
    IGeometry * This,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Envelope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_GetBoundingBox_Proxy( 
    IGeometry * This,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IGeometry_GetBoundingBox_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Buffer_Proxy( 
    IGeometry * This,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Buffer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Intersection_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Intersection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Clone_Proxy( 
    IGeometry * This,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Difference_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Difference_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Distance2_Proxy( 
    IGeometry * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IGeometry_Distance2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Distance_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IGeometry_Distance_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Equals_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Union_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometry_Union_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Contains_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Contains_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Crosses_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Crosses_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Disjoint_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Disjoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Intersects_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Intersects_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_OverLaps_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_OverLaps_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Relate_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [in] */ BSTR stringValue,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Relate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Touches_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Touches_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Within_Proxy( 
    IGeometry * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometry_Within_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometry_Attach_Proxy( 
    IGeometry * This,
    /* [in] */ byte *pAddr);


void __RPC_STUB IGeometry_Attach_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [id] */ HRESULT STDMETHODCALLTYPE IGeometry_Detach_Proxy( 
    IGeometry * This);


void __RPC_STUB IGeometry_Detach_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IGeometry_INTERFACE_DEFINED__ */


#ifndef __ICurve_INTERFACE_DEFINED__
#define __ICurve_INTERFACE_DEFINED__

/* interface ICurve */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICurve;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("0DB2BE4A-6D82-4d0e-AF45-1221E060BA8D")
    ICurve : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Vertices( 
            /* [retval][out] */ IPoints **Vertices) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Vertices( 
            /* [in] */ IPoints *Vertices) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_IsClosed( 
            /* [retval][out] */ BOOL *IsClosed) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_IsRing( 
            /* [retval][out] */ BOOL *IsRing) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Length( 
            /* [retval][out] */ double *Length) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_EndPoint( 
            /* [retval][out] */ IPoint **EndPoint) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StartPoint( 
            /* [retval][out] */ IPoint **StartPoint) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Value( 
            /* [in] */ double doubleValue,
            /* [retval][out] */ IPoint **point) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICurveVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICurve * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICurve * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICurve * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICurve * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICurve * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICurve * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICurve * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Vertices )( 
            ICurve * This,
            /* [retval][out] */ IPoints **Vertices);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Vertices )( 
            ICurve * This,
            /* [in] */ IPoints *Vertices);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsClosed )( 
            ICurve * This,
            /* [retval][out] */ BOOL *IsClosed);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsRing )( 
            ICurve * This,
            /* [retval][out] */ BOOL *IsRing);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Length )( 
            ICurve * This,
            /* [retval][out] */ double *Length);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EndPoint )( 
            ICurve * This,
            /* [retval][out] */ IPoint **EndPoint);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StartPoint )( 
            ICurve * This,
            /* [retval][out] */ IPoint **StartPoint);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Value )( 
            ICurve * This,
            /* [in] */ double doubleValue,
            /* [retval][out] */ IPoint **point);
        
        END_INTERFACE
    } ICurveVtbl;

    interface ICurve
    {
        CONST_VTBL struct ICurveVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICurve_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ICurve_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ICurve_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ICurve_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ICurve_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ICurve_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ICurve_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ICurve_get_Vertices(This,Vertices)	\
    (This)->lpVtbl -> get_Vertices(This,Vertices)

#define ICurve_put_Vertices(This,Vertices)	\
    (This)->lpVtbl -> put_Vertices(This,Vertices)

#define ICurve_get_IsClosed(This,IsClosed)	\
    (This)->lpVtbl -> get_IsClosed(This,IsClosed)

#define ICurve_get_IsRing(This,IsRing)	\
    (This)->lpVtbl -> get_IsRing(This,IsRing)

#define ICurve_get_Length(This,Length)	\
    (This)->lpVtbl -> get_Length(This,Length)

#define ICurve_get_EndPoint(This,EndPoint)	\
    (This)->lpVtbl -> get_EndPoint(This,EndPoint)

#define ICurve_get_StartPoint(This,StartPoint)	\
    (This)->lpVtbl -> get_StartPoint(This,StartPoint)

#define ICurve_Value(This,doubleValue,point)	\
    (This)->lpVtbl -> Value(This,doubleValue,point)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_Vertices_Proxy( 
    ICurve * This,
    /* [retval][out] */ IPoints **Vertices);


void __RPC_STUB ICurve_get_Vertices_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ICurve_put_Vertices_Proxy( 
    ICurve * This,
    /* [in] */ IPoints *Vertices);


void __RPC_STUB ICurve_put_Vertices_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_IsClosed_Proxy( 
    ICurve * This,
    /* [retval][out] */ BOOL *IsClosed);


void __RPC_STUB ICurve_get_IsClosed_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_IsRing_Proxy( 
    ICurve * This,
    /* [retval][out] */ BOOL *IsRing);


void __RPC_STUB ICurve_get_IsRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_Length_Proxy( 
    ICurve * This,
    /* [retval][out] */ double *Length);


void __RPC_STUB ICurve_get_Length_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_EndPoint_Proxy( 
    ICurve * This,
    /* [retval][out] */ IPoint **EndPoint);


void __RPC_STUB ICurve_get_EndPoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ICurve_get_StartPoint_Proxy( 
    ICurve * This,
    /* [retval][out] */ IPoint **StartPoint);


void __RPC_STUB ICurve_get_StartPoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ICurve_Value_Proxy( 
    ICurve * This,
    /* [in] */ double doubleValue,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB ICurve_Value_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ICurve_INTERFACE_DEFINED__ */


#ifndef __ILineString_INTERFACE_DEFINED__
#define __ILineString_INTERFACE_DEFINED__

/* interface ILineString */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILineString;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("45CBE668-B833-4d12-9461-F8BBA6A6C3B7")
    ILineString : public ICurve
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NumPoints( 
            /* [retval][out] */ int *NumPoints) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ ILineString **lstring) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ ILineString *lstring,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPoint( 
            /* [in] */ int intVal,
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE TransformToImage( 
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptsF) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILineStringVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILineString * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILineString * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILineString * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILineString * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILineString * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILineString * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILineString * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Vertices )( 
            ILineString * This,
            /* [retval][out] */ IPoints **Vertices);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Vertices )( 
            ILineString * This,
            /* [in] */ IPoints *Vertices);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsClosed )( 
            ILineString * This,
            /* [retval][out] */ BOOL *IsClosed);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsRing )( 
            ILineString * This,
            /* [retval][out] */ BOOL *IsRing);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Length )( 
            ILineString * This,
            /* [retval][out] */ double *Length);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EndPoint )( 
            ILineString * This,
            /* [retval][out] */ IPoint **EndPoint);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StartPoint )( 
            ILineString * This,
            /* [retval][out] */ IPoint **StartPoint);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Value )( 
            ILineString * This,
            /* [in] */ double doubleValue,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumPoints )( 
            ILineString * This,
            /* [retval][out] */ int *NumPoints);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            ILineString * This,
            /* [retval][out] */ ILineString **lstring);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            ILineString * This,
            /* [in] */ ILineString *lstring,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPoint )( 
            ILineString * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TransformToImage )( 
            ILineString * This,
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptsF);
        
        END_INTERFACE
    } ILineStringVtbl;

    interface ILineString
    {
        CONST_VTBL struct ILineStringVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILineString_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILineString_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILineString_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILineString_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILineString_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILineString_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILineString_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILineString_get_Vertices(This,Vertices)	\
    (This)->lpVtbl -> get_Vertices(This,Vertices)

#define ILineString_put_Vertices(This,Vertices)	\
    (This)->lpVtbl -> put_Vertices(This,Vertices)

#define ILineString_get_IsClosed(This,IsClosed)	\
    (This)->lpVtbl -> get_IsClosed(This,IsClosed)

#define ILineString_get_IsRing(This,IsRing)	\
    (This)->lpVtbl -> get_IsRing(This,IsRing)

#define ILineString_get_Length(This,Length)	\
    (This)->lpVtbl -> get_Length(This,Length)

#define ILineString_get_EndPoint(This,EndPoint)	\
    (This)->lpVtbl -> get_EndPoint(This,EndPoint)

#define ILineString_get_StartPoint(This,StartPoint)	\
    (This)->lpVtbl -> get_StartPoint(This,StartPoint)

#define ILineString_Value(This,doubleValue,point)	\
    (This)->lpVtbl -> Value(This,doubleValue,point)


#define ILineString_get_NumPoints(This,NumPoints)	\
    (This)->lpVtbl -> get_NumPoints(This,NumPoints)

#define ILineString_Clone(This,lstring)	\
    (This)->lpVtbl -> Clone(This,lstring)

#define ILineString_Equals(This,lstring,isSuccess)	\
    (This)->lpVtbl -> Equals(This,lstring,isSuccess)

#define ILineString_GetPoint(This,intVal,point)	\
    (This)->lpVtbl -> GetPoint(This,intVal,point)

#define ILineString_TransformToImage(This,map,ptsF)	\
    (This)->lpVtbl -> TransformToImage(This,map,ptsF)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILineString_get_NumPoints_Proxy( 
    ILineString * This,
    /* [retval][out] */ int *NumPoints);


void __RPC_STUB ILineString_get_NumPoints_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILineString_Clone_Proxy( 
    ILineString * This,
    /* [retval][out] */ ILineString **lstring);


void __RPC_STUB ILineString_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILineString_Equals_Proxy( 
    ILineString * This,
    /* [in] */ ILineString *lstring,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB ILineString_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILineString_GetPoint_Proxy( 
    ILineString * This,
    /* [in] */ int intVal,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB ILineString_GetPoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILineString_TransformToImage_Proxy( 
    ILineString * This,
    /* [in] */ IMap *map,
    /* [retval][out] */ PointFloat **ptsF);


void __RPC_STUB ILineString_TransformToImage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILineString_INTERFACE_DEFINED__ */


#ifndef __ILinearRing_INTERFACE_DEFINED__
#define __ILinearRing_INTERFACE_DEFINED__

/* interface ILinearRing */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILinearRing;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E34BBCE9-B8DC-45d2-9075-B66DB8D758A0")
    ILinearRing : public ILineString
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Area( 
            /* [retval][out] */ double *Area) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ ILinearRing **lring) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsPointWithin( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( 
            /* [in] */ IPoints *ptList) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsCCW( 
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILinearRingVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILinearRing * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILinearRing * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILinearRing * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILinearRing * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILinearRing * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILinearRing * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILinearRing * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Vertices )( 
            ILinearRing * This,
            /* [retval][out] */ IPoints **Vertices);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Vertices )( 
            ILinearRing * This,
            /* [in] */ IPoints *Vertices);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsClosed )( 
            ILinearRing * This,
            /* [retval][out] */ BOOL *IsClosed);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsRing )( 
            ILinearRing * This,
            /* [retval][out] */ BOOL *IsRing);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Length )( 
            ILinearRing * This,
            /* [retval][out] */ double *Length);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EndPoint )( 
            ILinearRing * This,
            /* [retval][out] */ IPoint **EndPoint);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StartPoint )( 
            ILinearRing * This,
            /* [retval][out] */ IPoint **StartPoint);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Value )( 
            ILinearRing * This,
            /* [in] */ double doubleValue,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumPoints )( 
            ILinearRing * This,
            /* [retval][out] */ int *NumPoints);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            ILinearRing * This,
            /* [retval][out] */ ILineString **lstring);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            ILinearRing * This,
            /* [in] */ ILineString *lstring,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPoint )( 
            ILinearRing * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TransformToImage )( 
            ILinearRing * This,
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptsF);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Area )( 
            ILinearRing * This,
            /* [retval][out] */ double *Area);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            ILinearRing * This,
            /* [retval][out] */ ILinearRing **lring);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsPointWithin )( 
            ILinearRing * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( 
            ILinearRing * This,
            /* [in] */ IPoints *ptList);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsCCW )( 
            ILinearRing * This,
            /* [retval][out] */ BOOL *isSuccess);
        
        END_INTERFACE
    } ILinearRingVtbl;

    interface ILinearRing
    {
        CONST_VTBL struct ILinearRingVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILinearRing_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILinearRing_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILinearRing_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILinearRing_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILinearRing_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILinearRing_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILinearRing_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILinearRing_get_Vertices(This,Vertices)	\
    (This)->lpVtbl -> get_Vertices(This,Vertices)

#define ILinearRing_put_Vertices(This,Vertices)	\
    (This)->lpVtbl -> put_Vertices(This,Vertices)

#define ILinearRing_get_IsClosed(This,IsClosed)	\
    (This)->lpVtbl -> get_IsClosed(This,IsClosed)

#define ILinearRing_get_IsRing(This,IsRing)	\
    (This)->lpVtbl -> get_IsRing(This,IsRing)

#define ILinearRing_get_Length(This,Length)	\
    (This)->lpVtbl -> get_Length(This,Length)

#define ILinearRing_get_EndPoint(This,EndPoint)	\
    (This)->lpVtbl -> get_EndPoint(This,EndPoint)

#define ILinearRing_get_StartPoint(This,StartPoint)	\
    (This)->lpVtbl -> get_StartPoint(This,StartPoint)

#define ILinearRing_Value(This,doubleValue,point)	\
    (This)->lpVtbl -> Value(This,doubleValue,point)


#define ILinearRing_get_NumPoints(This,NumPoints)	\
    (This)->lpVtbl -> get_NumPoints(This,NumPoints)

#define ILinearRing_Clone(This,lstring)	\
    (This)->lpVtbl -> Clone(This,lstring)

#define ILinearRing_Equals(This,lstring,isSuccess)	\
    (This)->lpVtbl -> Equals(This,lstring,isSuccess)

#define ILinearRing_GetPoint(This,intVal,point)	\
    (This)->lpVtbl -> GetPoint(This,intVal,point)

#define ILinearRing_TransformToImage(This,map,ptsF)	\
    (This)->lpVtbl -> TransformToImage(This,map,ptsF)


#define ILinearRing_get_Area(This,Area)	\
    (This)->lpVtbl -> get_Area(This,Area)

#define ILinearRing_Clone(This,lring)	\
    (This)->lpVtbl -> Clone(This,lring)

#define ILinearRing_IsPointWithin(This,point,isSuccess)	\
    (This)->lpVtbl -> IsPointWithin(This,point,isSuccess)

#define ILinearRing_Init(This,ptList)	\
    (This)->lpVtbl -> Init(This,ptList)

#define ILinearRing_IsCCW(This,isSuccess)	\
    (This)->lpVtbl -> IsCCW(This,isSuccess)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILinearRing_get_Area_Proxy( 
    ILinearRing * This,
    /* [retval][out] */ double *Area);


void __RPC_STUB ILinearRing_get_Area_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILinearRing_Clone_Proxy( 
    ILinearRing * This,
    /* [retval][out] */ ILinearRing **lring);


void __RPC_STUB ILinearRing_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILinearRing_IsPointWithin_Proxy( 
    ILinearRing * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB ILinearRing_IsPointWithin_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILinearRing_Init_Proxy( 
    ILinearRing * This,
    /* [in] */ IPoints *ptList);


void __RPC_STUB ILinearRing_Init_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILinearRing_IsCCW_Proxy( 
    ILinearRing * This,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB ILinearRing_IsCCW_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILinearRing_INTERFACE_DEFINED__ */


#ifndef __IPoint_INTERFACE_DEFINED__
#define __IPoint_INTERFACE_DEFINED__

/* interface IPoint */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IPoint;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4174600F-CF7B-4207-9F39-3DE150DD0593")
    IPoint : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_X( 
            /* [retval][out] */ double *X) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Y( 
            /* [retval][out] */ double *Y) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NumOrdinates( 
            /* [retval][out] */ int *NumOrdinates) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AsPoint( 
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CompareTo( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ int *intRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE FromDMS( 
            /* [in] */ DMS Long,
            /* [in] */ DMS Lat) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Intersects( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( 
            /* [in] */ double X,
            /* [in] */ double Y) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Touches( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE TransformToImage( 
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptF) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE This( 
            /* [in] */ int intVal,
            /* [retval][out] */ double *doubleRet) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPointVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPoint * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPoint * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPoint * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IPoint * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IPoint * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IPoint * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IPoint * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_X )( 
            IPoint * This,
            /* [retval][out] */ double *X);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Y )( 
            IPoint * This,
            /* [retval][out] */ double *Y);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumOrdinates )( 
            IPoint * This,
            /* [retval][out] */ int *NumOrdinates);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AsPoint )( 
            IPoint * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CompareTo )( 
            IPoint * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ int *intRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IPoint * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *FromDMS )( 
            IPoint * This,
            /* [in] */ DMS Long,
            /* [in] */ DMS Lat);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Intersects )( 
            IPoint * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( 
            IPoint * This,
            /* [in] */ double X,
            /* [in] */ double Y);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches )( 
            IPoint * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TransformToImage )( 
            IPoint * This,
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptF);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IPoint * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IPoint * This,
            /* [in] */ int intVal,
            /* [retval][out] */ double *doubleRet);
        
        END_INTERFACE
    } IPointVtbl;

    interface IPoint
    {
        CONST_VTBL struct IPointVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPoint_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IPoint_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IPoint_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IPoint_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IPoint_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IPoint_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IPoint_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IPoint_get_X(This,X)	\
    (This)->lpVtbl -> get_X(This,X)

#define IPoint_get_Y(This,Y)	\
    (This)->lpVtbl -> get_Y(This,Y)

#define IPoint_get_NumOrdinates(This,NumOrdinates)	\
    (This)->lpVtbl -> get_NumOrdinates(This,NumOrdinates)

#define IPoint_AsPoint(This,point)	\
    (This)->lpVtbl -> AsPoint(This,point)

#define IPoint_CompareTo(This,point,intRet)	\
    (This)->lpVtbl -> CompareTo(This,point,intRet)

#define IPoint_Equals(This,point,isSuccess)	\
    (This)->lpVtbl -> Equals(This,point,isSuccess)

#define IPoint_FromDMS(This,Long,Lat)	\
    (This)->lpVtbl -> FromDMS(This,Long,Lat)

#define IPoint_Intersects(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Intersects(This,boundingBox,isSuccess)

#define IPoint_Init(This,X,Y)	\
    (This)->lpVtbl -> Init(This,X,Y)

#define IPoint_Touches(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Touches(This,boundingBox,isSuccess)

#define IPoint_TransformToImage(This,map,ptF)	\
    (This)->lpVtbl -> TransformToImage(This,map,ptF)

#define IPoint_Clone(This,point)	\
    (This)->lpVtbl -> Clone(This,point)

#define IPoint_This(This,intVal,doubleRet)	\
    (This)->lpVtbl -> This(This,intVal,doubleRet)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPoint_get_X_Proxy( 
    IPoint * This,
    /* [retval][out] */ double *X);


void __RPC_STUB IPoint_get_X_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPoint_get_Y_Proxy( 
    IPoint * This,
    /* [retval][out] */ double *Y);


void __RPC_STUB IPoint_get_Y_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPoint_get_NumOrdinates_Proxy( 
    IPoint * This,
    /* [retval][out] */ int *NumOrdinates);


void __RPC_STUB IPoint_get_NumOrdinates_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_AsPoint_Proxy( 
    IPoint * This,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IPoint_AsPoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_CompareTo_Proxy( 
    IPoint * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ int *intRet);


void __RPC_STUB IPoint_CompareTo_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_Equals_Proxy( 
    IPoint * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IPoint_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_FromDMS_Proxy( 
    IPoint * This,
    /* [in] */ DMS Long,
    /* [in] */ DMS Lat);


void __RPC_STUB IPoint_FromDMS_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_Intersects_Proxy( 
    IPoint * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IPoint_Intersects_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_Init_Proxy( 
    IPoint * This,
    /* [in] */ double X,
    /* [in] */ double Y);


void __RPC_STUB IPoint_Init_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_Touches_Proxy( 
    IPoint * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IPoint_Touches_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_TransformToImage_Proxy( 
    IPoint * This,
    /* [in] */ IMap *map,
    /* [retval][out] */ PointFloat **ptF);


void __RPC_STUB IPoint_TransformToImage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_Clone_Proxy( 
    IPoint * This,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IPoint_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPoint_This_Proxy( 
    IPoint * This,
    /* [in] */ int intVal,
    /* [retval][out] */ double *doubleRet);


void __RPC_STUB IPoint_This_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IPoint_INTERFACE_DEFINED__ */


#ifndef __IPoint3D_INTERFACE_DEFINED__
#define __IPoint3D_INTERFACE_DEFINED__

/* interface IPoint3D */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IPoint3D;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("CEDEB74B-76DF-46f3-9F8C-10FAC3F7A07D")
    IPoint3D : public IPoint
    {
    public:
    };
    
#else 	/* C style interface */

    typedef struct IPoint3DVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPoint3D * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPoint3D * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPoint3D * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IPoint3D * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IPoint3D * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IPoint3D * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IPoint3D * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_X )( 
            IPoint3D * This,
            /* [retval][out] */ double *X);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Y )( 
            IPoint3D * This,
            /* [retval][out] */ double *Y);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumOrdinates )( 
            IPoint3D * This,
            /* [retval][out] */ int *NumOrdinates);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AsPoint )( 
            IPoint3D * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CompareTo )( 
            IPoint3D * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ int *intRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IPoint3D * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *FromDMS )( 
            IPoint3D * This,
            /* [in] */ DMS Long,
            /* [in] */ DMS Lat);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Intersects )( 
            IPoint3D * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( 
            IPoint3D * This,
            /* [in] */ double X,
            /* [in] */ double Y);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Touches )( 
            IPoint3D * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TransformToImage )( 
            IPoint3D * This,
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptF);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IPoint3D * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IPoint3D * This,
            /* [in] */ int intVal,
            /* [retval][out] */ double *doubleRet);
        
        END_INTERFACE
    } IPoint3DVtbl;

    interface IPoint3D
    {
        CONST_VTBL struct IPoint3DVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPoint3D_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IPoint3D_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IPoint3D_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IPoint3D_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IPoint3D_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IPoint3D_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IPoint3D_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IPoint3D_get_X(This,X)	\
    (This)->lpVtbl -> get_X(This,X)

#define IPoint3D_get_Y(This,Y)	\
    (This)->lpVtbl -> get_Y(This,Y)

#define IPoint3D_get_NumOrdinates(This,NumOrdinates)	\
    (This)->lpVtbl -> get_NumOrdinates(This,NumOrdinates)

#define IPoint3D_AsPoint(This,point)	\
    (This)->lpVtbl -> AsPoint(This,point)

#define IPoint3D_CompareTo(This,point,intRet)	\
    (This)->lpVtbl -> CompareTo(This,point,intRet)

#define IPoint3D_Equals(This,point,isSuccess)	\
    (This)->lpVtbl -> Equals(This,point,isSuccess)

#define IPoint3D_FromDMS(This,Long,Lat)	\
    (This)->lpVtbl -> FromDMS(This,Long,Lat)

#define IPoint3D_Intersects(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Intersects(This,boundingBox,isSuccess)

#define IPoint3D_Init(This,X,Y)	\
    (This)->lpVtbl -> Init(This,X,Y)

#define IPoint3D_Touches(This,boundingBox,isSuccess)	\
    (This)->lpVtbl -> Touches(This,boundingBox,isSuccess)

#define IPoint3D_TransformToImage(This,map,ptF)	\
    (This)->lpVtbl -> TransformToImage(This,map,ptF)

#define IPoint3D_Clone(This,point)	\
    (This)->lpVtbl -> Clone(This,point)

#define IPoint3D_This(This,intVal,doubleRet)	\
    (This)->lpVtbl -> This(This,intVal,doubleRet)


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IPoint3D_INTERFACE_DEFINED__ */


#ifndef __ISurface_INTERFACE_DEFINED__
#define __ISurface_INTERFACE_DEFINED__

/* interface ISurface */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ISurface;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("81D26CE4-D19E-4b17-8861-EC9B9A3FFC3F")
    ISurface : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Area( 
            /* [retval][out] */ double *Area) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Centroid( 
            /* [retval][out] */ IPoint **Centroid) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PointOnSurface( 
            /* [retval][out] */ IPoint **PointOnSurface) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Dimension( 
            /* [retval][out] */ int *Dimension) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISurfaceVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ISurface * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ISurface * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ISurface * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ISurface * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ISurface * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ISurface * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ISurface * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Area )( 
            ISurface * This,
            /* [retval][out] */ double *Area);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Centroid )( 
            ISurface * This,
            /* [retval][out] */ IPoint **Centroid);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PointOnSurface )( 
            ISurface * This,
            /* [retval][out] */ IPoint **PointOnSurface);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            ISurface * This,
            /* [retval][out] */ int *Dimension);
        
        END_INTERFACE
    } ISurfaceVtbl;

    interface ISurface
    {
        CONST_VTBL struct ISurfaceVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISurface_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ISurface_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ISurface_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ISurface_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ISurface_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ISurface_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ISurface_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ISurface_get_Area(This,Area)	\
    (This)->lpVtbl -> get_Area(This,Area)

#define ISurface_get_Centroid(This,Centroid)	\
    (This)->lpVtbl -> get_Centroid(This,Centroid)

#define ISurface_get_PointOnSurface(This,PointOnSurface)	\
    (This)->lpVtbl -> get_PointOnSurface(This,PointOnSurface)

#define ISurface_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ISurface_get_Area_Proxy( 
    ISurface * This,
    /* [retval][out] */ double *Area);


void __RPC_STUB ISurface_get_Area_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ISurface_get_Centroid_Proxy( 
    ISurface * This,
    /* [retval][out] */ IPoint **Centroid);


void __RPC_STUB ISurface_get_Centroid_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ISurface_get_PointOnSurface_Proxy( 
    ISurface * This,
    /* [retval][out] */ IPoint **PointOnSurface);


void __RPC_STUB ISurface_get_PointOnSurface_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ISurface_get_Dimension_Proxy( 
    ISurface * This,
    /* [retval][out] */ int *Dimension);


void __RPC_STUB ISurface_get_Dimension_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISurface_INTERFACE_DEFINED__ */


#ifndef __IPolygon_INTERFACE_DEFINED__
#define __IPolygon_INTERFACE_DEFINED__

/* interface IPolygon */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IPolygon;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1B4633F9-32F1-45c7-B0BE-B6371DF3C492")
    IPolygon : public ISurface
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ExteriorRing( 
            /* [retval][out] */ ILinearRing **ExteriorRing) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ExteriorRing( 
            /* [in] */ ILinearRing *ExteriorRing) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InteriorRings( 
            /* [retval][out] */ ILinearRings **InteriorRings) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InteriorRings( 
            /* [in] */ ILinearRings *InteriorRings) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NumInteriorRing( 
            /* [retval][out] */ int *NumInteriorRing) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PointOnSurface( 
            /* [retval][out] */ IPoint **PointOnSurface) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IPolygon **polygon) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ IPolygon *polygon,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE InteriorRing( 
            /* [in] */ int intVal,
            /* [retval][out] */ ILinearRing **lring) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE TransformToImage( 
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptsF) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPolygonVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPolygon * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPolygon * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPolygon * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IPolygon * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IPolygon * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IPolygon * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IPolygon * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Area )( 
            IPolygon * This,
            /* [retval][out] */ double *Area);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Centroid )( 
            IPolygon * This,
            /* [retval][out] */ IPoint **Centroid);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PointOnSurface )( 
            IPolygon * This,
            /* [retval][out] */ IPoint **PointOnSurface);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IPolygon * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ExteriorRing )( 
            IPolygon * This,
            /* [retval][out] */ ILinearRing **ExteriorRing);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ExteriorRing )( 
            IPolygon * This,
            /* [in] */ ILinearRing *ExteriorRing);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InteriorRings )( 
            IPolygon * This,
            /* [retval][out] */ ILinearRings **InteriorRings);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InteriorRings )( 
            IPolygon * This,
            /* [in] */ ILinearRings *InteriorRings);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumInteriorRing )( 
            IPolygon * This,
            /* [retval][out] */ int *NumInteriorRing);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PointOnSurface )( 
            IPolygon * This,
            /* [retval][out] */ IPoint **PointOnSurface);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IPolygon * This,
            /* [retval][out] */ IPolygon **polygon);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IPolygon * This,
            /* [in] */ IPolygon *polygon,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *InteriorRing )( 
            IPolygon * This,
            /* [in] */ int intVal,
            /* [retval][out] */ ILinearRing **lring);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TransformToImage )( 
            IPolygon * This,
            /* [in] */ IMap *map,
            /* [retval][out] */ PointFloat **ptsF);
        
        END_INTERFACE
    } IPolygonVtbl;

    interface IPolygon
    {
        CONST_VTBL struct IPolygonVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPolygon_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IPolygon_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IPolygon_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IPolygon_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IPolygon_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IPolygon_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IPolygon_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IPolygon_get_Area(This,Area)	\
    (This)->lpVtbl -> get_Area(This,Area)

#define IPolygon_get_Centroid(This,Centroid)	\
    (This)->lpVtbl -> get_Centroid(This,Centroid)

#define IPolygon_get_PointOnSurface(This,PointOnSurface)	\
    (This)->lpVtbl -> get_PointOnSurface(This,PointOnSurface)

#define IPolygon_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)


#define IPolygon_get_ExteriorRing(This,ExteriorRing)	\
    (This)->lpVtbl -> get_ExteriorRing(This,ExteriorRing)

#define IPolygon_put_ExteriorRing(This,ExteriorRing)	\
    (This)->lpVtbl -> put_ExteriorRing(This,ExteriorRing)

#define IPolygon_get_InteriorRings(This,InteriorRings)	\
    (This)->lpVtbl -> get_InteriorRings(This,InteriorRings)

#define IPolygon_put_InteriorRings(This,InteriorRings)	\
    (This)->lpVtbl -> put_InteriorRings(This,InteriorRings)

#define IPolygon_get_NumInteriorRing(This,NumInteriorRing)	\
    (This)->lpVtbl -> get_NumInteriorRing(This,NumInteriorRing)

#define IPolygon_get_PointOnSurface(This,PointOnSurface)	\
    (This)->lpVtbl -> get_PointOnSurface(This,PointOnSurface)

#define IPolygon_Clone(This,polygon)	\
    (This)->lpVtbl -> Clone(This,polygon)

#define IPolygon_Equals(This,polygon,isSuccess)	\
    (This)->lpVtbl -> Equals(This,polygon,isSuccess)

#define IPolygon_InteriorRing(This,intVal,lring)	\
    (This)->lpVtbl -> InteriorRing(This,intVal,lring)

#define IPolygon_TransformToImage(This,map,ptsF)	\
    (This)->lpVtbl -> TransformToImage(This,map,ptsF)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPolygon_get_ExteriorRing_Proxy( 
    IPolygon * This,
    /* [retval][out] */ ILinearRing **ExteriorRing);


void __RPC_STUB IPolygon_get_ExteriorRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IPolygon_put_ExteriorRing_Proxy( 
    IPolygon * This,
    /* [in] */ ILinearRing *ExteriorRing);


void __RPC_STUB IPolygon_put_ExteriorRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPolygon_get_InteriorRings_Proxy( 
    IPolygon * This,
    /* [retval][out] */ ILinearRings **InteriorRings);


void __RPC_STUB IPolygon_get_InteriorRings_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IPolygon_put_InteriorRings_Proxy( 
    IPolygon * This,
    /* [in] */ ILinearRings *InteriorRings);


void __RPC_STUB IPolygon_put_InteriorRings_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPolygon_get_NumInteriorRing_Proxy( 
    IPolygon * This,
    /* [retval][out] */ int *NumInteriorRing);


void __RPC_STUB IPolygon_get_NumInteriorRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IPolygon_get_PointOnSurface_Proxy( 
    IPolygon * This,
    /* [retval][out] */ IPoint **PointOnSurface);


void __RPC_STUB IPolygon_get_PointOnSurface_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPolygon_Clone_Proxy( 
    IPolygon * This,
    /* [retval][out] */ IPolygon **polygon);


void __RPC_STUB IPolygon_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPolygon_Equals_Proxy( 
    IPolygon * This,
    /* [in] */ IPolygon *polygon,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IPolygon_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPolygon_InteriorRing_Proxy( 
    IPolygon * This,
    /* [in] */ int intVal,
    /* [retval][out] */ ILinearRing **lring);


void __RPC_STUB IPolygon_InteriorRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IPolygon_TransformToImage_Proxy( 
    IPolygon * This,
    /* [in] */ IMap *map,
    /* [retval][out] */ PointFloat **ptsF);


void __RPC_STUB IPolygon_TransformToImage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IPolygon_INTERFACE_DEFINED__ */


#ifndef __IGeometryCollection_INTERFACE_DEFINED__
#define __IGeometryCollection_INTERFACE_DEFINED__

/* interface IGeometryCollection */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IGeometryCollection;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6161557E-8E19-4e2b-851E-49255C2F41BD")
    IGeometryCollection : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Dimension( 
            /* [retval][out] */ int *Dimension) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Collection( 
            /* [retval][out] */ IGeometries **Collection) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Collection( 
            /* [in] */ IGeometries *Collection) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NumGeometries( 
            /* [retval][out] */ int *NumGeometries) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IGeometryCollection **geometries) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Geometry( 
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE This( 
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IGeometryCollectionVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IGeometryCollection * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IGeometryCollection * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IGeometryCollection * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IGeometryCollection * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IGeometryCollection * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IGeometryCollection * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IGeometryCollection * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IGeometryCollection * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IGeometryCollection * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IGeometryCollection * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IGeometryCollection * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IGeometryCollection * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IGeometryCollection * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IGeometryCollection * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IGeometryCollection * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        END_INTERFACE
    } IGeometryCollectionVtbl;

    interface IGeometryCollection
    {
        CONST_VTBL struct IGeometryCollectionVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IGeometryCollection_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IGeometryCollection_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IGeometryCollection_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IGeometryCollection_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IGeometryCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IGeometryCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IGeometryCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IGeometryCollection_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IGeometryCollection_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IGeometryCollection_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IGeometryCollection_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IGeometryCollection_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IGeometryCollection_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IGeometryCollection_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IGeometryCollection_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_get_Dimension_Proxy( 
    IGeometryCollection * This,
    /* [retval][out] */ int *Dimension);


void __RPC_STUB IGeometryCollection_get_Dimension_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_get_Collection_Proxy( 
    IGeometryCollection * This,
    /* [retval][out] */ IGeometries **Collection);


void __RPC_STUB IGeometryCollection_get_Collection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_put_Collection_Proxy( 
    IGeometryCollection * This,
    /* [in] */ IGeometries *Collection);


void __RPC_STUB IGeometryCollection_put_Collection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_get_NumGeometries_Proxy( 
    IGeometryCollection * This,
    /* [retval][out] */ int *NumGeometries);


void __RPC_STUB IGeometryCollection_get_NumGeometries_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_Clone_Proxy( 
    IGeometryCollection * This,
    /* [retval][out] */ IGeometryCollection **geometries);


void __RPC_STUB IGeometryCollection_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_Equals_Proxy( 
    IGeometryCollection * This,
    /* [in] */ IGeometryCollection *geometries,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IGeometryCollection_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_Geometry_Proxy( 
    IGeometryCollection * This,
    /* [in] */ int intVal,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometryCollection_Geometry_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGeometryCollection_This_Proxy( 
    IGeometryCollection * This,
    /* [in] */ int intVal,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IGeometryCollection_This_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IGeometryCollection_INTERFACE_DEFINED__ */


#ifndef __IMultiCurve_INTERFACE_DEFINED__
#define __IMultiCurve_INTERFACE_DEFINED__

/* interface IMultiCurve */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMultiCurve;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("677D67A6-14D5-48f9-8560-9A7A6A4A8CAB")
    IMultiCurve : public IGeometryCollection
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_IsClosed( 
            /* [retval][out] */ BOOL *IsClosed) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Length( 
            /* [retval][out] */ double *Length) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiCurveVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiCurve * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiCurve * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiCurve * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMultiCurve * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMultiCurve * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMultiCurve * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMultiCurve * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IMultiCurve * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IMultiCurve * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IMultiCurve * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IMultiCurve * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiCurve * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IMultiCurve * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiCurve * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiCurve * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsClosed )( 
            IMultiCurve * This,
            /* [retval][out] */ BOOL *IsClosed);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Length )( 
            IMultiCurve * This,
            /* [retval][out] */ double *Length);
        
        END_INTERFACE
    } IMultiCurveVtbl;

    interface IMultiCurve
    {
        CONST_VTBL struct IMultiCurveVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiCurve_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMultiCurve_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMultiCurve_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMultiCurve_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMultiCurve_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMultiCurve_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMultiCurve_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMultiCurve_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IMultiCurve_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IMultiCurve_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IMultiCurve_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IMultiCurve_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IMultiCurve_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IMultiCurve_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IMultiCurve_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)


#define IMultiCurve_get_IsClosed(This,IsClosed)	\
    (This)->lpVtbl -> get_IsClosed(This,IsClosed)

#define IMultiCurve_get_Length(This,Length)	\
    (This)->lpVtbl -> get_Length(This,Length)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiCurve_get_IsClosed_Proxy( 
    IMultiCurve * This,
    /* [retval][out] */ BOOL *IsClosed);


void __RPC_STUB IMultiCurve_get_IsClosed_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiCurve_get_Length_Proxy( 
    IMultiCurve * This,
    /* [retval][out] */ double *Length);


void __RPC_STUB IMultiCurve_get_Length_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMultiCurve_INTERFACE_DEFINED__ */


#ifndef __IMultiLineString_INTERFACE_DEFINED__
#define __IMultiLineString_INTERFACE_DEFINED__

/* interface IMultiLineString */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMultiLineString;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("55C1077E-3ED8-4dd3-AF0B-D394EA8035FD")
    IMultiLineString : public IMultiCurve
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LineStrings( 
            /* [retval][out] */ ILineStrings **LineStrings) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LineStrings( 
            /* [in] */ ILineStrings *LineStrings) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE This( 
            /* [in] */ int intVal,
            /* [retval][out] */ ILineString **lstring) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IMultiLineString **mlstring) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiLineStringVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiLineString * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiLineString * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiLineString * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMultiLineString * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMultiLineString * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMultiLineString * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMultiLineString * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IMultiLineString * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IMultiLineString * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IMultiLineString * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IMultiLineString * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiLineString * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IMultiLineString * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiLineString * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiLineString * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsClosed )( 
            IMultiLineString * This,
            /* [retval][out] */ BOOL *IsClosed);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Length )( 
            IMultiLineString * This,
            /* [retval][out] */ double *Length);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LineStrings )( 
            IMultiLineString * This,
            /* [retval][out] */ ILineStrings **LineStrings);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LineStrings )( 
            IMultiLineString * This,
            /* [in] */ ILineStrings *LineStrings);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiLineString * This,
            /* [in] */ int intVal,
            /* [retval][out] */ ILineString **lstring);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiLineString * This,
            /* [retval][out] */ IMultiLineString **mlstring);
        
        END_INTERFACE
    } IMultiLineStringVtbl;

    interface IMultiLineString
    {
        CONST_VTBL struct IMultiLineStringVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiLineString_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMultiLineString_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMultiLineString_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMultiLineString_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMultiLineString_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMultiLineString_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMultiLineString_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMultiLineString_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IMultiLineString_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IMultiLineString_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IMultiLineString_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IMultiLineString_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IMultiLineString_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IMultiLineString_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IMultiLineString_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)


#define IMultiLineString_get_IsClosed(This,IsClosed)	\
    (This)->lpVtbl -> get_IsClosed(This,IsClosed)

#define IMultiLineString_get_Length(This,Length)	\
    (This)->lpVtbl -> get_Length(This,Length)


#define IMultiLineString_get_LineStrings(This,LineStrings)	\
    (This)->lpVtbl -> get_LineStrings(This,LineStrings)

#define IMultiLineString_put_LineStrings(This,LineStrings)	\
    (This)->lpVtbl -> put_LineStrings(This,LineStrings)

#define IMultiLineString_This(This,intVal,lstring)	\
    (This)->lpVtbl -> This(This,intVal,lstring)

#define IMultiLineString_Clone(This,mlstring)	\
    (This)->lpVtbl -> Clone(This,mlstring)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiLineString_get_LineStrings_Proxy( 
    IMultiLineString * This,
    /* [retval][out] */ ILineStrings **LineStrings);


void __RPC_STUB IMultiLineString_get_LineStrings_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMultiLineString_put_LineStrings_Proxy( 
    IMultiLineString * This,
    /* [in] */ ILineStrings *LineStrings);


void __RPC_STUB IMultiLineString_put_LineStrings_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiLineString_This_Proxy( 
    IMultiLineString * This,
    /* [in] */ int intVal,
    /* [retval][out] */ ILineString **lstring);


void __RPC_STUB IMultiLineString_This_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiLineString_Clone_Proxy( 
    IMultiLineString * This,
    /* [retval][out] */ IMultiLineString **mlstring);


void __RPC_STUB IMultiLineString_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMultiLineString_INTERFACE_DEFINED__ */


#ifndef __IMultiPoint_INTERFACE_DEFINED__
#define __IMultiPoint_INTERFACE_DEFINED__

/* interface IMultiPoint */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMultiPoint;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("BD9CA512-52D7-44d1-8BBB-8A7ACBB20B15")
    IMultiPoint : public IGeometryCollection
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Points( 
            /* [retval][out] */ IPoints **Points) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Points( 
            /* [in] */ IPoints *Points) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Geometry( 
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE This( 
            /* [in] */ int intVal,
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IMultiPoint **mpt) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiPointVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiPoint * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiPoint * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiPoint * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMultiPoint * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMultiPoint * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMultiPoint * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMultiPoint * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IMultiPoint * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IMultiPoint * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IMultiPoint * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IMultiPoint * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiPoint * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IMultiPoint * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiPoint * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiPoint * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Points )( 
            IMultiPoint * This,
            /* [retval][out] */ IPoints **Points);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Points )( 
            IMultiPoint * This,
            /* [in] */ IPoints *Points);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiPoint * This,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiPoint * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiPoint * This,
            /* [retval][out] */ IMultiPoint **mpt);
        
        END_INTERFACE
    } IMultiPointVtbl;

    interface IMultiPoint
    {
        CONST_VTBL struct IMultiPointVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiPoint_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMultiPoint_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMultiPoint_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMultiPoint_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMultiPoint_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMultiPoint_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMultiPoint_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMultiPoint_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IMultiPoint_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IMultiPoint_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IMultiPoint_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IMultiPoint_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IMultiPoint_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IMultiPoint_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IMultiPoint_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)


#define IMultiPoint_get_Points(This,Points)	\
    (This)->lpVtbl -> get_Points(This,Points)

#define IMultiPoint_put_Points(This,Points)	\
    (This)->lpVtbl -> put_Points(This,Points)

#define IMultiPoint_Geometry(This,point)	\
    (This)->lpVtbl -> Geometry(This,point)

#define IMultiPoint_This(This,intVal,point)	\
    (This)->lpVtbl -> This(This,intVal,point)

#define IMultiPoint_Clone(This,mpt)	\
    (This)->lpVtbl -> Clone(This,mpt)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiPoint_get_Points_Proxy( 
    IMultiPoint * This,
    /* [retval][out] */ IPoints **Points);


void __RPC_STUB IMultiPoint_get_Points_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMultiPoint_put_Points_Proxy( 
    IMultiPoint * This,
    /* [in] */ IPoints *Points);


void __RPC_STUB IMultiPoint_put_Points_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiPoint_Geometry_Proxy( 
    IMultiPoint * This,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IMultiPoint_Geometry_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiPoint_This_Proxy( 
    IMultiPoint * This,
    /* [in] */ int intVal,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IMultiPoint_This_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiPoint_Clone_Proxy( 
    IMultiPoint * This,
    /* [retval][out] */ IMultiPoint **mpt);


void __RPC_STUB IMultiPoint_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMultiPoint_INTERFACE_DEFINED__ */


#ifndef __IMultiSurface_INTERFACE_DEFINED__
#define __IMultiSurface_INTERFACE_DEFINED__

/* interface IMultiSurface */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMultiSurface;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FEC918F1-2C5A-4853-9B2E-CA40436A09B8")
    IMultiSurface : public IGeometryCollection
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Area( 
            /* [retval][out] */ double *Area) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Centroid( 
            /* [retval][out] */ IPoint **Centroid) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PointOnSurface( 
            /* [retval][out] */ IPoint **PointOnSurface) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiSurfaceVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiSurface * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiSurface * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiSurface * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMultiSurface * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMultiSurface * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMultiSurface * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMultiSurface * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IMultiSurface * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IMultiSurface * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IMultiSurface * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IMultiSurface * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiSurface * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IMultiSurface * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiSurface * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiSurface * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Area )( 
            IMultiSurface * This,
            /* [retval][out] */ double *Area);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Centroid )( 
            IMultiSurface * This,
            /* [retval][out] */ IPoint **Centroid);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PointOnSurface )( 
            IMultiSurface * This,
            /* [retval][out] */ IPoint **PointOnSurface);
        
        END_INTERFACE
    } IMultiSurfaceVtbl;

    interface IMultiSurface
    {
        CONST_VTBL struct IMultiSurfaceVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiSurface_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMultiSurface_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMultiSurface_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMultiSurface_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMultiSurface_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMultiSurface_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMultiSurface_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMultiSurface_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IMultiSurface_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IMultiSurface_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IMultiSurface_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IMultiSurface_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IMultiSurface_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IMultiSurface_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IMultiSurface_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)


#define IMultiSurface_get_Area(This,Area)	\
    (This)->lpVtbl -> get_Area(This,Area)

#define IMultiSurface_get_Centroid(This,Centroid)	\
    (This)->lpVtbl -> get_Centroid(This,Centroid)

#define IMultiSurface_get_PointOnSurface(This,PointOnSurface)	\
    (This)->lpVtbl -> get_PointOnSurface(This,PointOnSurface)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiSurface_get_Area_Proxy( 
    IMultiSurface * This,
    /* [retval][out] */ double *Area);


void __RPC_STUB IMultiSurface_get_Area_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiSurface_get_Centroid_Proxy( 
    IMultiSurface * This,
    /* [retval][out] */ IPoint **Centroid);


void __RPC_STUB IMultiSurface_get_Centroid_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiSurface_get_PointOnSurface_Proxy( 
    IMultiSurface * This,
    /* [retval][out] */ IPoint **PointOnSurface);


void __RPC_STUB IMultiSurface_get_PointOnSurface_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMultiSurface_INTERFACE_DEFINED__ */


#ifndef __IMultiPolygon_INTERFACE_DEFINED__
#define __IMultiPolygon_INTERFACE_DEFINED__

/* interface IMultiPolygon */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMultiPolygon;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2373A845-0485-497d-A5DD-461ED3875BFF")
    IMultiPolygon : public IMultiSurface
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Polygons( 
            /* [retval][out] */ IPolygons **Polygons) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Polygons( 
            /* [in] */ IPolygons *Polygons) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE This( 
            /* [in] */ int intVal,
            /* [retval][out] */ IPolygon **polygon) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ IMultiPolygon **mpolygon) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiPolygonVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiPolygon * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiPolygon * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiPolygon * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMultiPolygon * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMultiPolygon * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMultiPolygon * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMultiPolygon * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Dimension )( 
            IMultiPolygon * This,
            /* [retval][out] */ int *Dimension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Collection )( 
            IMultiPolygon * This,
            /* [retval][out] */ IGeometries **Collection);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Collection )( 
            IMultiPolygon * This,
            /* [in] */ IGeometries *Collection);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumGeometries )( 
            IMultiPolygon * This,
            /* [retval][out] */ int *NumGeometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiPolygon * This,
            /* [retval][out] */ IGeometryCollection **geometries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            IMultiPolygon * This,
            /* [in] */ IGeometryCollection *geometries,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Geometry )( 
            IMultiPolygon * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiPolygon * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Area )( 
            IMultiPolygon * This,
            /* [retval][out] */ double *Area);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Centroid )( 
            IMultiPolygon * This,
            /* [retval][out] */ IPoint **Centroid);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PointOnSurface )( 
            IMultiPolygon * This,
            /* [retval][out] */ IPoint **PointOnSurface);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Polygons )( 
            IMultiPolygon * This,
            /* [retval][out] */ IPolygons **Polygons);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Polygons )( 
            IMultiPolygon * This,
            /* [in] */ IPolygons *Polygons);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *This )( 
            IMultiPolygon * This,
            /* [in] */ int intVal,
            /* [retval][out] */ IPolygon **polygon);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IMultiPolygon * This,
            /* [retval][out] */ IMultiPolygon **mpolygon);
        
        END_INTERFACE
    } IMultiPolygonVtbl;

    interface IMultiPolygon
    {
        CONST_VTBL struct IMultiPolygonVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiPolygon_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMultiPolygon_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMultiPolygon_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMultiPolygon_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMultiPolygon_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMultiPolygon_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMultiPolygon_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMultiPolygon_get_Dimension(This,Dimension)	\
    (This)->lpVtbl -> get_Dimension(This,Dimension)

#define IMultiPolygon_get_Collection(This,Collection)	\
    (This)->lpVtbl -> get_Collection(This,Collection)

#define IMultiPolygon_put_Collection(This,Collection)	\
    (This)->lpVtbl -> put_Collection(This,Collection)

#define IMultiPolygon_get_NumGeometries(This,NumGeometries)	\
    (This)->lpVtbl -> get_NumGeometries(This,NumGeometries)

#define IMultiPolygon_Clone(This,geometries)	\
    (This)->lpVtbl -> Clone(This,geometries)

#define IMultiPolygon_Equals(This,geometries,isSuccess)	\
    (This)->lpVtbl -> Equals(This,geometries,isSuccess)

#define IMultiPolygon_Geometry(This,intVal,outGeom)	\
    (This)->lpVtbl -> Geometry(This,intVal,outGeom)

#define IMultiPolygon_This(This,intVal,outGeom)	\
    (This)->lpVtbl -> This(This,intVal,outGeom)


#define IMultiPolygon_get_Area(This,Area)	\
    (This)->lpVtbl -> get_Area(This,Area)

#define IMultiPolygon_get_Centroid(This,Centroid)	\
    (This)->lpVtbl -> get_Centroid(This,Centroid)

#define IMultiPolygon_get_PointOnSurface(This,PointOnSurface)	\
    (This)->lpVtbl -> get_PointOnSurface(This,PointOnSurface)


#define IMultiPolygon_get_Polygons(This,Polygons)	\
    (This)->lpVtbl -> get_Polygons(This,Polygons)

#define IMultiPolygon_put_Polygons(This,Polygons)	\
    (This)->lpVtbl -> put_Polygons(This,Polygons)

#define IMultiPolygon_This(This,intVal,polygon)	\
    (This)->lpVtbl -> This(This,intVal,polygon)

#define IMultiPolygon_Clone(This,mpolygon)	\
    (This)->lpVtbl -> Clone(This,mpolygon)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMultiPolygon_get_Polygons_Proxy( 
    IMultiPolygon * This,
    /* [retval][out] */ IPolygons **Polygons);


void __RPC_STUB IMultiPolygon_get_Polygons_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMultiPolygon_put_Polygons_Proxy( 
    IMultiPolygon * This,
    /* [in] */ IPolygons *Polygons);


void __RPC_STUB IMultiPolygon_put_Polygons_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiPolygon_This_Proxy( 
    IMultiPolygon * This,
    /* [in] */ int intVal,
    /* [retval][out] */ IPolygon **polygon);


void __RPC_STUB IMultiPolygon_This_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMultiPolygon_Clone_Proxy( 
    IMultiPolygon * This,
    /* [retval][out] */ IMultiPolygon **mpolygon);


void __RPC_STUB IMultiPolygon_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMultiPolygon_INTERFACE_DEFINED__ */


#ifndef __IEnumXX_INTERFACE_DEFINED__
#define __IEnumXX_INTERFACE_DEFINED__

/* interface IEnumXX */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IEnumXX;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("433C7BE5-2A0E-4ae8-98A0-D41D71B80073")
    IEnumXX : public IDispatch
    {
    public:
        virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pnCount) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ IUnknown **ppEnum) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumXXVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IEnumXX * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IEnumXX * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IEnumXX * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IEnumXX * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IEnumXX * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IEnumXX * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IEnumXX * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            IEnumXX * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            IEnumXX * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        END_INTERFACE
    } IEnumXXVtbl;

    interface IEnumXX
    {
        CONST_VTBL struct IEnumXXVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumXX_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IEnumXX_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IEnumXX_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IEnumXX_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IEnumXX_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IEnumXX_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IEnumXX_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IEnumXX_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define IEnumXX_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [propget] */ HRESULT STDMETHODCALLTYPE IEnumXX_get_Count_Proxy( 
    IEnumXX * This,
    /* [retval][out] */ long *pnCount);


void __RPC_STUB IEnumXX_get_Count_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE IEnumXX_get__NewEnum_Proxy( 
    IEnumXX * This,
    /* [retval][out] */ IUnknown **ppEnum);


void __RPC_STUB IEnumXX_get__NewEnum_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IEnumXX_INTERFACE_DEFINED__ */


#ifndef __IGeometries_INTERFACE_DEFINED__
#define __IGeometries_INTERFACE_DEFINED__

/* interface IGeometries */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IGeometries;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("75ED7FCB-1647-4027-BE71-90F82EECE08B")
    IGeometries : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddIGeometry( 
            /* [in] */ IGeometry *ppGeometry) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ IGeometry **ppGeometry) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IGeometriesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IGeometries * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IGeometries * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IGeometries * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IGeometries * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IGeometries * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IGeometries * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IGeometries * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            IGeometries * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            IGeometries * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddIGeometry )( 
            IGeometries * This,
            /* [in] */ IGeometry *ppGeometry);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            IGeometries * This,
            /* [in] */ long n,
            /* [retval][out] */ IGeometry **ppGeometry);
        
        END_INTERFACE
    } IGeometriesVtbl;

    interface IGeometries
    {
        CONST_VTBL struct IGeometriesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IGeometries_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IGeometries_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IGeometries_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IGeometries_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IGeometries_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IGeometries_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IGeometries_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IGeometries_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define IGeometries_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define IGeometries_AddIGeometry(This,ppGeometry)	\
    (This)->lpVtbl -> AddIGeometry(This,ppGeometry)

#define IGeometries_get_Item(This,n,ppGeometry)	\
    (This)->lpVtbl -> get_Item(This,n,ppGeometry)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IGeometries_AddIGeometry_Proxy( 
    IGeometries * This,
    /* [in] */ IGeometry *ppGeometry);


void __RPC_STUB IGeometries_AddIGeometry_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE IGeometries_get_Item_Proxy( 
    IGeometries * This,
    /* [in] */ long n,
    /* [retval][out] */ IGeometry **ppGeometry);


void __RPC_STUB IGeometries_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IGeometries_INTERFACE_DEFINED__ */


#ifndef __IPoints_INTERFACE_DEFINED__
#define __IPoints_INTERFACE_DEFINED__

/* interface IPoints */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IPoints;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("7DA6A5DA-0EA0-4663-83E8-693B6AEC0EA6")
    IPoints : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddIPoint( 
            /* [in] */ IPoint *ppPoint) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ IPoint **ppPoint) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPointsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPoints * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPoints * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPoints * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IPoints * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IPoints * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IPoints * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IPoints * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            IPoints * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            IPoints * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddIPoint )( 
            IPoints * This,
            /* [in] */ IPoint *ppPoint);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            IPoints * This,
            /* [in] */ long n,
            /* [retval][out] */ IPoint **ppPoint);
        
        END_INTERFACE
    } IPointsVtbl;

    interface IPoints
    {
        CONST_VTBL struct IPointsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPoints_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IPoints_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IPoints_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IPoints_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IPoints_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IPoints_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IPoints_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IPoints_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define IPoints_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define IPoints_AddIPoint(This,ppPoint)	\
    (This)->lpVtbl -> AddIPoint(This,ppPoint)

#define IPoints_get_Item(This,n,ppPoint)	\
    (This)->lpVtbl -> get_Item(This,n,ppPoint)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IPoints_AddIPoint_Proxy( 
    IPoints * This,
    /* [in] */ IPoint *ppPoint);


void __RPC_STUB IPoints_AddIPoint_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE IPoints_get_Item_Proxy( 
    IPoints * This,
    /* [in] */ long n,
    /* [retval][out] */ IPoint **ppPoint);


void __RPC_STUB IPoints_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IPoints_INTERFACE_DEFINED__ */


#ifndef __IBoundingBoxs_INTERFACE_DEFINED__
#define __IBoundingBoxs_INTERFACE_DEFINED__

/* interface IBoundingBoxs */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IBoundingBoxs;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("F7A1AFE2-12D8-436f-B677-069622F3903E")
    IBoundingBoxs : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddIBoundingBox( 
            /* [in] */ IBoundingBox *ppBoundingBox) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ IBoundingBox **ppBoundingBox) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IBoundingBoxsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IBoundingBoxs * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IBoundingBoxs * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IBoundingBoxs * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IBoundingBoxs * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IBoundingBoxs * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IBoundingBoxs * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IBoundingBoxs * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            IBoundingBoxs * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            IBoundingBoxs * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddIBoundingBox )( 
            IBoundingBoxs * This,
            /* [in] */ IBoundingBox *ppBoundingBox);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            IBoundingBoxs * This,
            /* [in] */ long n,
            /* [retval][out] */ IBoundingBox **ppBoundingBox);
        
        END_INTERFACE
    } IBoundingBoxsVtbl;

    interface IBoundingBoxs
    {
        CONST_VTBL struct IBoundingBoxsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IBoundingBoxs_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IBoundingBoxs_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IBoundingBoxs_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IBoundingBoxs_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IBoundingBoxs_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IBoundingBoxs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IBoundingBoxs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IBoundingBoxs_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define IBoundingBoxs_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define IBoundingBoxs_AddIBoundingBox(This,ppBoundingBox)	\
    (This)->lpVtbl -> AddIBoundingBox(This,ppBoundingBox)

#define IBoundingBoxs_get_Item(This,n,ppBoundingBox)	\
    (This)->lpVtbl -> get_Item(This,n,ppBoundingBox)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IBoundingBoxs_AddIBoundingBox_Proxy( 
    IBoundingBoxs * This,
    /* [in] */ IBoundingBox *ppBoundingBox);


void __RPC_STUB IBoundingBoxs_AddIBoundingBox_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE IBoundingBoxs_get_Item_Proxy( 
    IBoundingBoxs * This,
    /* [in] */ long n,
    /* [retval][out] */ IBoundingBox **ppBoundingBox);


void __RPC_STUB IBoundingBoxs_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IBoundingBoxs_INTERFACE_DEFINED__ */


#ifndef __IPolygons_INTERFACE_DEFINED__
#define __IPolygons_INTERFACE_DEFINED__

/* interface IPolygons */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IPolygons;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("0C3FDFAE-5DCC-4580-8E90-7138AA573EF7")
    IPolygons : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddIPolygon( 
            /* [in] */ IPolygon *ppIPolygon) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ IPolygon **ppIPolygon) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPolygonsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPolygons * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPolygons * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPolygons * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IPolygons * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IPolygons * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IPolygons * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IPolygons * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            IPolygons * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            IPolygons * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddIPolygon )( 
            IPolygons * This,
            /* [in] */ IPolygon *ppIPolygon);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            IPolygons * This,
            /* [in] */ long n,
            /* [retval][out] */ IPolygon **ppIPolygon);
        
        END_INTERFACE
    } IPolygonsVtbl;

    interface IPolygons
    {
        CONST_VTBL struct IPolygonsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPolygons_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IPolygons_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IPolygons_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IPolygons_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IPolygons_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IPolygons_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IPolygons_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IPolygons_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define IPolygons_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define IPolygons_AddIPolygon(This,ppIPolygon)	\
    (This)->lpVtbl -> AddIPolygon(This,ppIPolygon)

#define IPolygons_get_Item(This,n,ppIPolygon)	\
    (This)->lpVtbl -> get_Item(This,n,ppIPolygon)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IPolygons_AddIPolygon_Proxy( 
    IPolygons * This,
    /* [in] */ IPolygon *ppIPolygon);


void __RPC_STUB IPolygons_AddIPolygon_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE IPolygons_get_Item_Proxy( 
    IPolygons * This,
    /* [in] */ long n,
    /* [retval][out] */ IPolygon **ppIPolygon);


void __RPC_STUB IPolygons_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IPolygons_INTERFACE_DEFINED__ */


#ifndef __ILineStrings_INTERFACE_DEFINED__
#define __ILineStrings_INTERFACE_DEFINED__

/* interface ILineStrings */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILineStrings;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8D42D27C-41C7-4da5-A54A-272A7FBCDD1A")
    ILineStrings : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddILineString( 
            /* [in] */ ILineString *ppLineString) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ ILineString **ppLineString) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILineStringsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILineStrings * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILineStrings * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILineStrings * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILineStrings * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILineStrings * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILineStrings * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILineStrings * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ILineStrings * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ILineStrings * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddILineString )( 
            ILineStrings * This,
            /* [in] */ ILineString *ppLineString);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            ILineStrings * This,
            /* [in] */ long n,
            /* [retval][out] */ ILineString **ppLineString);
        
        END_INTERFACE
    } ILineStringsVtbl;

    interface ILineStrings
    {
        CONST_VTBL struct ILineStringsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILineStrings_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILineStrings_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILineStrings_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILineStrings_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILineStrings_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILineStrings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILineStrings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILineStrings_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define ILineStrings_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define ILineStrings_AddILineString(This,ppLineString)	\
    (This)->lpVtbl -> AddILineString(This,ppLineString)

#define ILineStrings_get_Item(This,n,ppLineString)	\
    (This)->lpVtbl -> get_Item(This,n,ppLineString)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ILineStrings_AddILineString_Proxy( 
    ILineStrings * This,
    /* [in] */ ILineString *ppLineString);


void __RPC_STUB ILineStrings_AddILineString_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE ILineStrings_get_Item_Proxy( 
    ILineStrings * This,
    /* [in] */ long n,
    /* [retval][out] */ ILineString **ppLineString);


void __RPC_STUB ILineStrings_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILineStrings_INTERFACE_DEFINED__ */


#ifndef __ILinearRings_INTERFACE_DEFINED__
#define __ILinearRings_INTERFACE_DEFINED__

/* interface ILinearRings */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILinearRings;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("682DC65C-D860-4ace-B111-984C36E95BDA")
    ILinearRings : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddILinearRing( 
            /* [in] */ ILinearRing *ppLinearRing) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ ILinearRing **ppLinearRing) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILinearRingsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILinearRings * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILinearRings * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILinearRings * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILinearRings * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILinearRings * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILinearRings * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILinearRings * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ILinearRings * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ILinearRings * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddILinearRing )( 
            ILinearRings * This,
            /* [in] */ ILinearRing *ppLinearRing);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            ILinearRings * This,
            /* [in] */ long n,
            /* [retval][out] */ ILinearRing **ppLinearRing);
        
        END_INTERFACE
    } ILinearRingsVtbl;

    interface ILinearRings
    {
        CONST_VTBL struct ILinearRingsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILinearRings_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILinearRings_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILinearRings_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILinearRings_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILinearRings_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILinearRings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILinearRings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILinearRings_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define ILinearRings_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define ILinearRings_AddILinearRing(This,ppLinearRing)	\
    (This)->lpVtbl -> AddILinearRing(This,ppLinearRing)

#define ILinearRings_get_Item(This,n,ppLinearRing)	\
    (This)->lpVtbl -> get_Item(This,n,ppLinearRing)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ILinearRings_AddILinearRing_Proxy( 
    ILinearRings * This,
    /* [in] */ ILinearRing *ppLinearRing);


void __RPC_STUB ILinearRings_AddILinearRing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE ILinearRings_get_Item_Proxy( 
    ILinearRings * This,
    /* [in] */ long n,
    /* [retval][out] */ ILinearRing **ppLinearRing);


void __RPC_STUB ILinearRings_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILinearRings_INTERFACE_DEFINED__ */


#ifndef __ILayers_INTERFACE_DEFINED__
#define __ILayers_INTERFACE_DEFINED__

/* interface ILayers */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILayers;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DD195184-0E66-4f08-8332-AA08F512CD54")
    ILayers : public IEnumXX
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AddILayer( 
            /* [in] */ ILayer *ppLayer) = 0;
        
        virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( 
            /* [in] */ long n,
            /* [retval][out] */ ILayer **ppLayer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RemoveILayers( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILayersVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILayers * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILayers * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILayers * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILayers * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILayers * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILayers * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILayers * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ILayers * This,
            /* [retval][out] */ long *pnCount);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ILayers * This,
            /* [retval][out] */ IUnknown **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *AddILayer )( 
            ILayers * This,
            /* [in] */ ILayer *ppLayer);
        
        /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( 
            ILayers * This,
            /* [in] */ long n,
            /* [retval][out] */ ILayer **ppLayer);
        
        HRESULT ( STDMETHODCALLTYPE *RemoveILayers )( 
            ILayers * This);
        
        END_INTERFACE
    } ILayersVtbl;

    interface ILayers
    {
        CONST_VTBL struct ILayersVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILayers_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILayers_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILayers_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILayers_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILayers_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILayers_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILayers_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILayers_get_Count(This,pnCount)	\
    (This)->lpVtbl -> get_Count(This,pnCount)

#define ILayers_get__NewEnum(This,ppEnum)	\
    (This)->lpVtbl -> get__NewEnum(This,ppEnum)


#define ILayers_AddILayer(This,ppLayer)	\
    (This)->lpVtbl -> AddILayer(This,ppLayer)

#define ILayers_get_Item(This,n,ppLayer)	\
    (This)->lpVtbl -> get_Item(This,n,ppLayer)

#define ILayers_RemoveILayers(This)	\
    (This)->lpVtbl -> RemoveILayers(This)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ILayers_AddILayer_Proxy( 
    ILayers * This,
    /* [in] */ ILayer *ppLayer);


void __RPC_STUB ILayers_AddILayer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [propget][id] */ HRESULT STDMETHODCALLTYPE ILayers_get_Item_Proxy( 
    ILayers * This,
    /* [in] */ long n,
    /* [retval][out] */ ILayer **ppLayer);


void __RPC_STUB ILayers_get_Item_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ILayers_RemoveILayers_Proxy( 
    ILayers * This);


void __RPC_STUB ILayers_RemoveILayers_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILayers_INTERFACE_DEFINED__ */


#ifndef __ILayer_INTERFACE_DEFINED__
#define __ILayer_INTERFACE_DEFINED__

/* interface ILayer */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ILayer;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("CA5B842F-A9E7-4f9f-A4C5-EDEBB2334AE9")
    ILayer : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Enabled( 
            /* [retval][out] */ BOOL *Enabled) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Enabled( 
            /* [in] */ BOOL Enabled) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Envelope( 
            /* [retval][out] */ IBoundingBox **Envelope) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinVisible( 
            /* [retval][out] */ double *MinVisible) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinVisible( 
            /* [in] */ double MinVisible) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxVisible( 
            /* [retval][out] */ double *MaxVisible) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxVisible( 
            /* [in] */ double MaxVisible) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LayerName( 
            /* [retval][out] */ BSTR *LayerName) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LayerName( 
            /* [in] */ BSTR LayerName) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SRID( 
            /* [retval][out] */ int *SRID) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SRID( 
            /* [in] */ int SRID) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Render( 
            /* [in] */ long graphichandle,
            /* [in] */ IMap *map) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( 
            /* [retval][out] */ ILayer **layer) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Equals( 
            /* [in] */ ILayer *layer,
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DataSource( 
            /* [retval][out] */ IProvider **DataSource) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_DataSource( 
            /* [in] */ IProvider *DataSource) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Style( 
            /* [retval][out] */ IStyle **Style) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Style( 
            /* [in] */ IStyle *Style) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ILayerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ILayer * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ILayer * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ILayer * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ILayer * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ILayer * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ILayer * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ILayer * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( 
            ILayer * This,
            /* [retval][out] */ BOOL *Enabled);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( 
            ILayer * This,
            /* [in] */ BOOL Enabled);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Envelope )( 
            ILayer * This,
            /* [retval][out] */ IBoundingBox **Envelope);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinVisible )( 
            ILayer * This,
            /* [retval][out] */ double *MinVisible);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinVisible )( 
            ILayer * This,
            /* [in] */ double MinVisible);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxVisible )( 
            ILayer * This,
            /* [retval][out] */ double *MaxVisible);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxVisible )( 
            ILayer * This,
            /* [in] */ double MaxVisible);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LayerName )( 
            ILayer * This,
            /* [retval][out] */ BSTR *LayerName);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LayerName )( 
            ILayer * This,
            /* [in] */ BSTR LayerName);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SRID )( 
            ILayer * This,
            /* [retval][out] */ int *SRID);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SRID )( 
            ILayer * This,
            /* [in] */ int SRID);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Render )( 
            ILayer * This,
            /* [in] */ long graphichandle,
            /* [in] */ IMap *map);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( 
            ILayer * This,
            /* [retval][out] */ ILayer **layer);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Equals )( 
            ILayer * This,
            /* [in] */ ILayer *layer,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DataSource )( 
            ILayer * This,
            /* [retval][out] */ IProvider **DataSource);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DataSource )( 
            ILayer * This,
            /* [in] */ IProvider *DataSource);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Style )( 
            ILayer * This,
            /* [retval][out] */ IStyle **Style);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Style )( 
            ILayer * This,
            /* [in] */ IStyle *Style);
        
        END_INTERFACE
    } ILayerVtbl;

    interface ILayer
    {
        CONST_VTBL struct ILayerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ILayer_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ILayer_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ILayer_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ILayer_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define ILayer_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define ILayer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define ILayer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define ILayer_get_Enabled(This,Enabled)	\
    (This)->lpVtbl -> get_Enabled(This,Enabled)

#define ILayer_put_Enabled(This,Enabled)	\
    (This)->lpVtbl -> put_Enabled(This,Enabled)

#define ILayer_get_Envelope(This,Envelope)	\
    (This)->lpVtbl -> get_Envelope(This,Envelope)

#define ILayer_get_MinVisible(This,MinVisible)	\
    (This)->lpVtbl -> get_MinVisible(This,MinVisible)

#define ILayer_put_MinVisible(This,MinVisible)	\
    (This)->lpVtbl -> put_MinVisible(This,MinVisible)

#define ILayer_get_MaxVisible(This,MaxVisible)	\
    (This)->lpVtbl -> get_MaxVisible(This,MaxVisible)

#define ILayer_put_MaxVisible(This,MaxVisible)	\
    (This)->lpVtbl -> put_MaxVisible(This,MaxVisible)

#define ILayer_get_LayerName(This,LayerName)	\
    (This)->lpVtbl -> get_LayerName(This,LayerName)

#define ILayer_put_LayerName(This,LayerName)	\
    (This)->lpVtbl -> put_LayerName(This,LayerName)

#define ILayer_get_SRID(This,SRID)	\
    (This)->lpVtbl -> get_SRID(This,SRID)

#define ILayer_put_SRID(This,SRID)	\
    (This)->lpVtbl -> put_SRID(This,SRID)

#define ILayer_Render(This,graphichandle,map)	\
    (This)->lpVtbl -> Render(This,graphichandle,map)

#define ILayer_Clone(This,layer)	\
    (This)->lpVtbl -> Clone(This,layer)

#define ILayer_Equals(This,layer,isSuccess)	\
    (This)->lpVtbl -> Equals(This,layer,isSuccess)

#define ILayer_get_DataSource(This,DataSource)	\
    (This)->lpVtbl -> get_DataSource(This,DataSource)

#define ILayer_put_DataSource(This,DataSource)	\
    (This)->lpVtbl -> put_DataSource(This,DataSource)

#define ILayer_get_Style(This,Style)	\
    (This)->lpVtbl -> get_Style(This,Style)

#define ILayer_put_Style(This,Style)	\
    (This)->lpVtbl -> put_Style(This,Style)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_Enabled_Proxy( 
    ILayer * This,
    /* [retval][out] */ BOOL *Enabled);


void __RPC_STUB ILayer_get_Enabled_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_Enabled_Proxy( 
    ILayer * This,
    /* [in] */ BOOL Enabled);


void __RPC_STUB ILayer_put_Enabled_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_Envelope_Proxy( 
    ILayer * This,
    /* [retval][out] */ IBoundingBox **Envelope);


void __RPC_STUB ILayer_get_Envelope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_MinVisible_Proxy( 
    ILayer * This,
    /* [retval][out] */ double *MinVisible);


void __RPC_STUB ILayer_get_MinVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_MinVisible_Proxy( 
    ILayer * This,
    /* [in] */ double MinVisible);


void __RPC_STUB ILayer_put_MinVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_MaxVisible_Proxy( 
    ILayer * This,
    /* [retval][out] */ double *MaxVisible);


void __RPC_STUB ILayer_get_MaxVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_MaxVisible_Proxy( 
    ILayer * This,
    /* [in] */ double MaxVisible);


void __RPC_STUB ILayer_put_MaxVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_LayerName_Proxy( 
    ILayer * This,
    /* [retval][out] */ BSTR *LayerName);


void __RPC_STUB ILayer_get_LayerName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_LayerName_Proxy( 
    ILayer * This,
    /* [in] */ BSTR LayerName);


void __RPC_STUB ILayer_put_LayerName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_SRID_Proxy( 
    ILayer * This,
    /* [retval][out] */ int *SRID);


void __RPC_STUB ILayer_get_SRID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_SRID_Proxy( 
    ILayer * This,
    /* [in] */ int SRID);


void __RPC_STUB ILayer_put_SRID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILayer_Render_Proxy( 
    ILayer * This,
    /* [in] */ long graphichandle,
    /* [in] */ IMap *map);


void __RPC_STUB ILayer_Render_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILayer_Clone_Proxy( 
    ILayer * This,
    /* [retval][out] */ ILayer **layer);


void __RPC_STUB ILayer_Clone_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILayer_Equals_Proxy( 
    ILayer * This,
    /* [in] */ ILayer *layer,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB ILayer_Equals_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_DataSource_Proxy( 
    ILayer * This,
    /* [retval][out] */ IProvider **DataSource);


void __RPC_STUB ILayer_get_DataSource_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_DataSource_Proxy( 
    ILayer * This,
    /* [in] */ IProvider *DataSource);


void __RPC_STUB ILayer_put_DataSource_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILayer_get_Style_Proxy( 
    ILayer * This,
    /* [retval][out] */ IStyle **Style);


void __RPC_STUB ILayer_get_Style_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILayer_put_Style_Proxy( 
    ILayer * This,
    /* [in] */ IStyle *Style);


void __RPC_STUB ILayer_put_Style_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ILayer_INTERFACE_DEFINED__ */


#ifndef __IFeatureDataRow_INTERFACE_DEFINED__
#define __IFeatureDataRow_INTERFACE_DEFINED__

/* interface IFeatureDataRow */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IFeatureDataRow;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5C51D77B-7A2C-4cc5-AD8C-AADE19DB96F6")
    IFeatureDataRow : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetValue( 
            /* [in] */ BSTR FieldName,
            /* [retval][out] */ VARIANT *FieldValue) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetValue( 
            /* [in] */ BSTR FieldName,
            /* [in] */ VARIANT FieldValue) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IFeatureDataRowVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IFeatureDataRow * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IFeatureDataRow * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IFeatureDataRow * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IFeatureDataRow * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IFeatureDataRow * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IFeatureDataRow * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IFeatureDataRow * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetValue )( 
            IFeatureDataRow * This,
            /* [in] */ BSTR FieldName,
            /* [retval][out] */ VARIANT *FieldValue);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetValue )( 
            IFeatureDataRow * This,
            /* [in] */ BSTR FieldName,
            /* [in] */ VARIANT FieldValue);
        
        END_INTERFACE
    } IFeatureDataRowVtbl;

    interface IFeatureDataRow
    {
        CONST_VTBL struct IFeatureDataRowVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IFeatureDataRow_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IFeatureDataRow_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IFeatureDataRow_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IFeatureDataRow_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IFeatureDataRow_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IFeatureDataRow_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IFeatureDataRow_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IFeatureDataRow_GetValue(This,FieldName,FieldValue)	\
    (This)->lpVtbl -> GetValue(This,FieldName,FieldValue)

#define IFeatureDataRow_SetValue(This,FieldName,FieldValue)	\
    (This)->lpVtbl -> SetValue(This,FieldName,FieldValue)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataRow_GetValue_Proxy( 
    IFeatureDataRow * This,
    /* [in] */ BSTR FieldName,
    /* [retval][out] */ VARIANT *FieldValue);


void __RPC_STUB IFeatureDataRow_GetValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataRow_SetValue_Proxy( 
    IFeatureDataRow * This,
    /* [in] */ BSTR FieldName,
    /* [in] */ VARIANT FieldValue);


void __RPC_STUB IFeatureDataRow_SetValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IFeatureDataRow_INTERFACE_DEFINED__ */


#ifndef __IFeatureDataSet_INTERFACE_DEFINED__
#define __IFeatureDataSet_INTERFACE_DEFINED__

/* interface IFeatureDataSet */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IFeatureDataSet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("A8259DE6-6F05-434d-9134-856A1A3DF29B")
    IFeatureDataSet : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetRow( 
            /* [in] */ int index,
            /* [retval][out] */ IFeatureDataRow **ppRow) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( 
            /* [retval][out] */ long *count) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddRow( 
            /* [in] */ IFeatureDataRow *pRow) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IFeatureDataSetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IFeatureDataSet * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IFeatureDataSet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IFeatureDataSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IFeatureDataSet * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IFeatureDataSet * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IFeatureDataSet * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IFeatureDataSet * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetRow )( 
            IFeatureDataSet * This,
            /* [in] */ int index,
            /* [retval][out] */ IFeatureDataRow **ppRow);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( 
            IFeatureDataSet * This,
            /* [retval][out] */ long *count);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddRow )( 
            IFeatureDataSet * This,
            /* [in] */ IFeatureDataRow *pRow);
        
        END_INTERFACE
    } IFeatureDataSetVtbl;

    interface IFeatureDataSet
    {
        CONST_VTBL struct IFeatureDataSetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IFeatureDataSet_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IFeatureDataSet_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IFeatureDataSet_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IFeatureDataSet_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IFeatureDataSet_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IFeatureDataSet_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IFeatureDataSet_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IFeatureDataSet_GetRow(This,index,ppRow)	\
    (This)->lpVtbl -> GetRow(This,index,ppRow)

#define IFeatureDataSet_GetCount(This,count)	\
    (This)->lpVtbl -> GetCount(This,count)

#define IFeatureDataSet_AddRow(This,pRow)	\
    (This)->lpVtbl -> AddRow(This,pRow)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataSet_GetRow_Proxy( 
    IFeatureDataSet * This,
    /* [in] */ int index,
    /* [retval][out] */ IFeatureDataRow **ppRow);


void __RPC_STUB IFeatureDataSet_GetRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataSet_GetCount_Proxy( 
    IFeatureDataSet * This,
    /* [retval][out] */ long *count);


void __RPC_STUB IFeatureDataSet_GetCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataSet_AddRow_Proxy( 
    IFeatureDataSet * This,
    /* [in] */ IFeatureDataRow *pRow);


void __RPC_STUB IFeatureDataSet_AddRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IFeatureDataSet_INTERFACE_DEFINED__ */


#ifndef __IFeatureDataTable_INTERFACE_DEFINED__
#define __IFeatureDataTable_INTERFACE_DEFINED__

/* interface IFeatureDataTable */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IFeatureDataTable;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B1818EC2-78A6-42c3-B820-5947C88F8C5B")
    IFeatureDataTable : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetRow( 
            /* [in] */ int index,
            /* [retval][out] */ IFeatureDataRow **ppRow) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( 
            /* [retval][out] */ long *count) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE NewRow( 
            /* [retval][out] */ IFeatureDataRow **ppRow) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddRow( 
            /* [in] */ FeatureRecord *pRecord) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IFeatureDataTableVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IFeatureDataTable * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IFeatureDataTable * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IFeatureDataTable * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IFeatureDataTable * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IFeatureDataTable * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IFeatureDataTable * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IFeatureDataTable * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetRow )( 
            IFeatureDataTable * This,
            /* [in] */ int index,
            /* [retval][out] */ IFeatureDataRow **ppRow);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( 
            IFeatureDataTable * This,
            /* [retval][out] */ long *count);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *NewRow )( 
            IFeatureDataTable * This,
            /* [retval][out] */ IFeatureDataRow **ppRow);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddRow )( 
            IFeatureDataTable * This,
            /* [in] */ FeatureRecord *pRecord);
        
        END_INTERFACE
    } IFeatureDataTableVtbl;

    interface IFeatureDataTable
    {
        CONST_VTBL struct IFeatureDataTableVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IFeatureDataTable_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IFeatureDataTable_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IFeatureDataTable_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IFeatureDataTable_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IFeatureDataTable_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IFeatureDataTable_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IFeatureDataTable_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IFeatureDataTable_GetRow(This,index,ppRow)	\
    (This)->lpVtbl -> GetRow(This,index,ppRow)

#define IFeatureDataTable_GetCount(This,count)	\
    (This)->lpVtbl -> GetCount(This,count)

#define IFeatureDataTable_NewRow(This,ppRow)	\
    (This)->lpVtbl -> NewRow(This,ppRow)

#define IFeatureDataTable_AddRow(This,pRecord)	\
    (This)->lpVtbl -> AddRow(This,pRecord)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataTable_GetRow_Proxy( 
    IFeatureDataTable * This,
    /* [in] */ int index,
    /* [retval][out] */ IFeatureDataRow **ppRow);


void __RPC_STUB IFeatureDataTable_GetRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataTable_GetCount_Proxy( 
    IFeatureDataTable * This,
    /* [retval][out] */ long *count);


void __RPC_STUB IFeatureDataTable_GetCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataTable_NewRow_Proxy( 
    IFeatureDataTable * This,
    /* [retval][out] */ IFeatureDataRow **ppRow);


void __RPC_STUB IFeatureDataTable_NewRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IFeatureDataTable_AddRow_Proxy( 
    IFeatureDataTable * This,
    /* [in] */ FeatureRecord *pRecord);


void __RPC_STUB IFeatureDataTable_AddRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IFeatureDataTable_INTERFACE_DEFINED__ */


#ifndef __IProvider_INTERFACE_DEFINED__
#define __IProvider_INTERFACE_DEFINED__

/* interface IProvider */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5C3EAA66-C37E-4f9f-9E3E-10545C9ED559")
    IProvider : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ConnectionID( 
            /* [retval][out] */ BSTR *ConnectionID) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ConnectionID( 
            /* [in] */ BSTR ConnectionID) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_IsOpen( 
            /* [retval][out] */ BOOL *IsOpen) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SRID( 
            /* [retval][out] */ int *SRID) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SRID( 
            /* [in] */ int SRID) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FileName( 
            /* [retval][out] */ BSTR *FileName) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_FileName( 
            /* [in] */ BSTR FileName) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetExtents( 
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ExecuteIntersectionQuery2( 
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IFeatureDataSet **fset) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ExecuteIntersectionQuery( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IFeatureDataSet **fset) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetFeature( 
            /* [in] */ int RowID,
            /* [retval][out] */ IFeatureDataRow **frow) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetFeatureCount( 
            /* [retval][out] */ long *FeaturesCount) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGeometriesInView( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IGeometries **geomtries) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGeometryByID( 
            /* [in] */ int oid,
            /* [retval][out] */ IGeometry **outGeom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetObjectIDsInView( 
            /* [in] */ IBoundingBox *boundingBox,
            /* [out][in] */ int *count,
            /* [retval][out] */ int **ids) = 0;
        
        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Close( void) = 0;
        
        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Open( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGeometryType( 
            /* [retval][out] */ int *intRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGeometryAddressByID( 
            /* [in] */ int oid,
            /* [retval][out] */ byte **addr) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DataSourceTitle( 
            /* [retval][out] */ BSTR *DataSourceTitle) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IProvider * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IProvider * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IProvider * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IProvider * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IProvider * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionID )( 
            IProvider * This,
            /* [retval][out] */ BSTR *ConnectionID);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionID )( 
            IProvider * This,
            /* [in] */ BSTR ConnectionID);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_IsOpen )( 
            IProvider * This,
            /* [retval][out] */ BOOL *IsOpen);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SRID )( 
            IProvider * This,
            /* [retval][out] */ int *SRID);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SRID )( 
            IProvider * This,
            /* [in] */ int SRID);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FileName )( 
            IProvider * This,
            /* [retval][out] */ BSTR *FileName);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FileName )( 
            IProvider * This,
            /* [in] */ BSTR FileName);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetExtents )( 
            IProvider * This,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ExecuteIntersectionQuery2 )( 
            IProvider * This,
            /* [in] */ IGeometry *inGeom,
            /* [retval][out] */ IFeatureDataSet **fset);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ExecuteIntersectionQuery )( 
            IProvider * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IFeatureDataSet **fset);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetFeature )( 
            IProvider * This,
            /* [in] */ int RowID,
            /* [retval][out] */ IFeatureDataRow **frow);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetFeatureCount )( 
            IProvider * This,
            /* [retval][out] */ long *FeaturesCount);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGeometriesInView )( 
            IProvider * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [retval][out] */ IGeometries **geomtries);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGeometryByID )( 
            IProvider * This,
            /* [in] */ int oid,
            /* [retval][out] */ IGeometry **outGeom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetObjectIDsInView )( 
            IProvider * This,
            /* [in] */ IBoundingBox *boundingBox,
            /* [out][in] */ int *count,
            /* [retval][out] */ int **ids);
        
        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Close )( 
            IProvider * This);
        
        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Open )( 
            IProvider * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGeometryType )( 
            IProvider * This,
            /* [retval][out] */ int *intRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGeometryAddressByID )( 
            IProvider * This,
            /* [in] */ int oid,
            /* [retval][out] */ byte **addr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DataSourceTitle )( 
            IProvider * This,
            /* [retval][out] */ BSTR *DataSourceTitle);
        
        END_INTERFACE
    } IProviderVtbl;

    interface IProvider
    {
        CONST_VTBL struct IProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IProvider_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IProvider_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IProvider_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IProvider_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IProvider_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IProvider_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IProvider_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IProvider_get_ConnectionID(This,ConnectionID)	\
    (This)->lpVtbl -> get_ConnectionID(This,ConnectionID)

#define IProvider_put_ConnectionID(This,ConnectionID)	\
    (This)->lpVtbl -> put_ConnectionID(This,ConnectionID)

#define IProvider_get_IsOpen(This,IsOpen)	\
    (This)->lpVtbl -> get_IsOpen(This,IsOpen)

#define IProvider_get_SRID(This,SRID)	\
    (This)->lpVtbl -> get_SRID(This,SRID)

#define IProvider_put_SRID(This,SRID)	\
    (This)->lpVtbl -> put_SRID(This,SRID)

#define IProvider_get_FileName(This,FileName)	\
    (This)->lpVtbl -> get_FileName(This,FileName)

#define IProvider_put_FileName(This,FileName)	\
    (This)->lpVtbl -> put_FileName(This,FileName)

#define IProvider_GetExtents(This,boundingBox)	\
    (This)->lpVtbl -> GetExtents(This,boundingBox)

#define IProvider_ExecuteIntersectionQuery2(This,inGeom,fset)	\
    (This)->lpVtbl -> ExecuteIntersectionQuery2(This,inGeom,fset)

#define IProvider_ExecuteIntersectionQuery(This,boundingBox,fset)	\
    (This)->lpVtbl -> ExecuteIntersectionQuery(This,boundingBox,fset)

#define IProvider_GetFeature(This,RowID,frow)	\
    (This)->lpVtbl -> GetFeature(This,RowID,frow)

#define IProvider_GetFeatureCount(This,FeaturesCount)	\
    (This)->lpVtbl -> GetFeatureCount(This,FeaturesCount)

#define IProvider_GetGeometriesInView(This,boundingBox,geomtries)	\
    (This)->lpVtbl -> GetGeometriesInView(This,boundingBox,geomtries)

#define IProvider_GetGeometryByID(This,oid,outGeom)	\
    (This)->lpVtbl -> GetGeometryByID(This,oid,outGeom)

#define IProvider_GetObjectIDsInView(This,boundingBox,count,ids)	\
    (This)->lpVtbl -> GetObjectIDsInView(This,boundingBox,count,ids)

#define IProvider_Close(This)	\
    (This)->lpVtbl -> Close(This)

#define IProvider_Open(This)	\
    (This)->lpVtbl -> Open(This)

#define IProvider_GetGeometryType(This,intRet)	\
    (This)->lpVtbl -> GetGeometryType(This,intRet)

#define IProvider_GetGeometryAddressByID(This,oid,addr)	\
    (This)->lpVtbl -> GetGeometryAddressByID(This,oid,addr)

#define IProvider_get_DataSourceTitle(This,DataSourceTitle)	\
    (This)->lpVtbl -> get_DataSourceTitle(This,DataSourceTitle)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IProvider_get_ConnectionID_Proxy( 
    IProvider * This,
    /* [retval][out] */ BSTR *ConnectionID);


void __RPC_STUB IProvider_get_ConnectionID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IProvider_put_ConnectionID_Proxy( 
    IProvider * This,
    /* [in] */ BSTR ConnectionID);


void __RPC_STUB IProvider_put_ConnectionID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IProvider_get_IsOpen_Proxy( 
    IProvider * This,
    /* [retval][out] */ BOOL *IsOpen);


void __RPC_STUB IProvider_get_IsOpen_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IProvider_get_SRID_Proxy( 
    IProvider * This,
    /* [retval][out] */ int *SRID);


void __RPC_STUB IProvider_get_SRID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IProvider_put_SRID_Proxy( 
    IProvider * This,
    /* [in] */ int SRID);


void __RPC_STUB IProvider_put_SRID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IProvider_get_FileName_Proxy( 
    IProvider * This,
    /* [retval][out] */ BSTR *FileName);


void __RPC_STUB IProvider_get_FileName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IProvider_put_FileName_Proxy( 
    IProvider * This,
    /* [in] */ BSTR FileName);


void __RPC_STUB IProvider_put_FileName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetExtents_Proxy( 
    IProvider * This,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IProvider_GetExtents_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_ExecuteIntersectionQuery2_Proxy( 
    IProvider * This,
    /* [in] */ IGeometry *inGeom,
    /* [retval][out] */ IFeatureDataSet **fset);


void __RPC_STUB IProvider_ExecuteIntersectionQuery2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_ExecuteIntersectionQuery_Proxy( 
    IProvider * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ IFeatureDataSet **fset);


void __RPC_STUB IProvider_ExecuteIntersectionQuery_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetFeature_Proxy( 
    IProvider * This,
    /* [in] */ int RowID,
    /* [retval][out] */ IFeatureDataRow **frow);


void __RPC_STUB IProvider_GetFeature_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetFeatureCount_Proxy( 
    IProvider * This,
    /* [retval][out] */ long *FeaturesCount);


void __RPC_STUB IProvider_GetFeatureCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetGeometriesInView_Proxy( 
    IProvider * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [retval][out] */ IGeometries **geomtries);


void __RPC_STUB IProvider_GetGeometriesInView_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetGeometryByID_Proxy( 
    IProvider * This,
    /* [in] */ int oid,
    /* [retval][out] */ IGeometry **outGeom);


void __RPC_STUB IProvider_GetGeometryByID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetObjectIDsInView_Proxy( 
    IProvider * This,
    /* [in] */ IBoundingBox *boundingBox,
    /* [out][in] */ int *count,
    /* [retval][out] */ int **ids);


void __RPC_STUB IProvider_GetObjectIDsInView_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [id] */ HRESULT STDMETHODCALLTYPE IProvider_Close_Proxy( 
    IProvider * This);


void __RPC_STUB IProvider_Close_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [id] */ HRESULT STDMETHODCALLTYPE IProvider_Open_Proxy( 
    IProvider * This);


void __RPC_STUB IProvider_Open_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetGeometryType_Proxy( 
    IProvider * This,
    /* [retval][out] */ int *intRet);


void __RPC_STUB IProvider_GetGeometryType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IProvider_GetGeometryAddressByID_Proxy( 
    IProvider * This,
    /* [in] */ int oid,
    /* [retval][out] */ byte **addr);


void __RPC_STUB IProvider_GetGeometryAddressByID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IProvider_get_DataSourceTitle_Proxy( 
    IProvider * This,
    /* [retval][out] */ BSTR *DataSourceTitle);


void __RPC_STUB IProvider_get_DataSourceTitle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IProvider_INTERFACE_DEFINED__ */


#ifndef __IStyle_INTERFACE_DEFINED__
#define __IStyle_INTERFACE_DEFINED__

/* interface IStyle */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IStyle;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E9130F35-F127-4238-8C40-D2708F34669C")
    IStyle : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Enable( 
            /* [retval][out] */ BOOL *Enable) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Enable( 
            /* [in] */ BOOL Enable) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxVisible( 
            /* [retval][out] */ double *MaxVisible) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxVisible( 
            /* [in] */ double MaxVisible) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinVisible( 
            /* [retval][out] */ double *MinVisible) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinVisible( 
            /* [in] */ double MinVisible) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStyleVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IStyle * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IStyle * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IStyle * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IStyle * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IStyle * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IStyle * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IStyle * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enable )( 
            IStyle * This,
            /* [retval][out] */ BOOL *Enable);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enable )( 
            IStyle * This,
            /* [in] */ BOOL Enable);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxVisible )( 
            IStyle * This,
            /* [retval][out] */ double *MaxVisible);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxVisible )( 
            IStyle * This,
            /* [in] */ double MaxVisible);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinVisible )( 
            IStyle * This,
            /* [retval][out] */ double *MinVisible);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinVisible )( 
            IStyle * This,
            /* [in] */ double MinVisible);
        
        END_INTERFACE
    } IStyleVtbl;

    interface IStyle
    {
        CONST_VTBL struct IStyleVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStyle_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IStyle_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IStyle_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IStyle_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IStyle_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IStyle_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IStyle_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IStyle_get_Enable(This,Enable)	\
    (This)->lpVtbl -> get_Enable(This,Enable)

#define IStyle_put_Enable(This,Enable)	\
    (This)->lpVtbl -> put_Enable(This,Enable)

#define IStyle_get_MaxVisible(This,MaxVisible)	\
    (This)->lpVtbl -> get_MaxVisible(This,MaxVisible)

#define IStyle_put_MaxVisible(This,MaxVisible)	\
    (This)->lpVtbl -> put_MaxVisible(This,MaxVisible)

#define IStyle_get_MinVisible(This,MinVisible)	\
    (This)->lpVtbl -> get_MinVisible(This,MinVisible)

#define IStyle_put_MinVisible(This,MinVisible)	\
    (This)->lpVtbl -> put_MinVisible(This,MinVisible)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IStyle_get_Enable_Proxy( 
    IStyle * This,
    /* [retval][out] */ BOOL *Enable);


void __RPC_STUB IStyle_get_Enable_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IStyle_put_Enable_Proxy( 
    IStyle * This,
    /* [in] */ BOOL Enable);


void __RPC_STUB IStyle_put_Enable_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IStyle_get_MaxVisible_Proxy( 
    IStyle * This,
    /* [retval][out] */ double *MaxVisible);


void __RPC_STUB IStyle_get_MaxVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IStyle_put_MaxVisible_Proxy( 
    IStyle * This,
    /* [in] */ double MaxVisible);


void __RPC_STUB IStyle_put_MaxVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IStyle_get_MinVisible_Proxy( 
    IStyle * This,
    /* [retval][out] */ double *MinVisible);


void __RPC_STUB IStyle_get_MinVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IStyle_put_MinVisible_Proxy( 
    IStyle * This,
    /* [in] */ double MinVisible);


void __RPC_STUB IStyle_put_MinVisible_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IStyle_INTERFACE_DEFINED__ */


#ifndef __IVectorStyle_INTERFACE_DEFINED__
#define __IVectorStyle_INTERFACE_DEFINED__

/* interface IVectorStyle */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IVectorStyle;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1625B14A-EBD1-4427-AC65-3269E1E781FA")
    IVectorStyle : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OutLineWidth( 
            /* [retval][out] */ double *OutLineWidth) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OutLineWidth( 
            /* [in] */ double OutLineWidth) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OutLineColor( 
            /* [retval][out] */ long *OutLineColor) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OutLineColor( 
            /* [in] */ long OutLineColor) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FillColor( 
            /* [retval][out] */ long *FillColor) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_FillColor( 
            /* [in] */ long FillColor) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SymbolUrl( 
            /* [retval][out] */ BSTR *SymbolUrl) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SymbolUrl( 
            /* [in] */ BSTR SymbolUrl) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SymbolScale( 
            /* [retval][out] */ double *SymbolScale) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SymbolScale( 
            /* [in] */ double SymbolScale) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SymbolRotation( 
            /* [retval][out] */ double *SymbolRotation) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SymbolRotation( 
            /* [in] */ double SymbolRotation) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LineWidth( 
            /* [retval][out] */ double *LineWidth) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LineWidth( 
            /* [in] */ double LineWidth) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LineColor( 
            /* [retval][out] */ long *LineColor) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LineColor( 
            /* [in] */ long LineColor) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_EnableOutline( 
            /* [retval][out] */ BOOL *EnableOutline) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_EnableOutline( 
            /* [in] */ BOOL EnableOutline) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IVectorStyleVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IVectorStyle * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IVectorStyle * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IVectorStyle * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IVectorStyle * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IVectorStyle * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IVectorStyle * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IVectorStyle * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OutLineWidth )( 
            IVectorStyle * This,
            /* [retval][out] */ double *OutLineWidth);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OutLineWidth )( 
            IVectorStyle * This,
            /* [in] */ double OutLineWidth);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OutLineColor )( 
            IVectorStyle * This,
            /* [retval][out] */ long *OutLineColor);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OutLineColor )( 
            IVectorStyle * This,
            /* [in] */ long OutLineColor);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FillColor )( 
            IVectorStyle * This,
            /* [retval][out] */ long *FillColor);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FillColor )( 
            IVectorStyle * This,
            /* [in] */ long FillColor);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolUrl )( 
            IVectorStyle * This,
            /* [retval][out] */ BSTR *SymbolUrl);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolUrl )( 
            IVectorStyle * This,
            /* [in] */ BSTR SymbolUrl);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolScale )( 
            IVectorStyle * This,
            /* [retval][out] */ double *SymbolScale);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolScale )( 
            IVectorStyle * This,
            /* [in] */ double SymbolScale);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRotation )( 
            IVectorStyle * This,
            /* [retval][out] */ double *SymbolRotation);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRotation )( 
            IVectorStyle * This,
            /* [in] */ double SymbolRotation);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LineWidth )( 
            IVectorStyle * This,
            /* [retval][out] */ double *LineWidth);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LineWidth )( 
            IVectorStyle * This,
            /* [in] */ double LineWidth);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LineColor )( 
            IVectorStyle * This,
            /* [retval][out] */ long *LineColor);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LineColor )( 
            IVectorStyle * This,
            /* [in] */ long LineColor);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnableOutline )( 
            IVectorStyle * This,
            /* [retval][out] */ BOOL *EnableOutline);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_EnableOutline )( 
            IVectorStyle * This,
            /* [in] */ BOOL EnableOutline);
        
        END_INTERFACE
    } IVectorStyleVtbl;

    interface IVectorStyle
    {
        CONST_VTBL struct IVectorStyleVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IVectorStyle_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IVectorStyle_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IVectorStyle_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IVectorStyle_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IVectorStyle_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IVectorStyle_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IVectorStyle_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IVectorStyle_get_OutLineWidth(This,OutLineWidth)	\
    (This)->lpVtbl -> get_OutLineWidth(This,OutLineWidth)

#define IVectorStyle_put_OutLineWidth(This,OutLineWidth)	\
    (This)->lpVtbl -> put_OutLineWidth(This,OutLineWidth)

#define IVectorStyle_get_OutLineColor(This,OutLineColor)	\
    (This)->lpVtbl -> get_OutLineColor(This,OutLineColor)

#define IVectorStyle_put_OutLineColor(This,OutLineColor)	\
    (This)->lpVtbl -> put_OutLineColor(This,OutLineColor)

#define IVectorStyle_get_FillColor(This,FillColor)	\
    (This)->lpVtbl -> get_FillColor(This,FillColor)

#define IVectorStyle_put_FillColor(This,FillColor)	\
    (This)->lpVtbl -> put_FillColor(This,FillColor)

#define IVectorStyle_get_SymbolUrl(This,SymbolUrl)	\
    (This)->lpVtbl -> get_SymbolUrl(This,SymbolUrl)

#define IVectorStyle_put_SymbolUrl(This,SymbolUrl)	\
    (This)->lpVtbl -> put_SymbolUrl(This,SymbolUrl)

#define IVectorStyle_get_SymbolScale(This,SymbolScale)	\
    (This)->lpVtbl -> get_SymbolScale(This,SymbolScale)

#define IVectorStyle_put_SymbolScale(This,SymbolScale)	\
    (This)->lpVtbl -> put_SymbolScale(This,SymbolScale)

#define IVectorStyle_get_SymbolRotation(This,SymbolRotation)	\
    (This)->lpVtbl -> get_SymbolRotation(This,SymbolRotation)

#define IVectorStyle_put_SymbolRotation(This,SymbolRotation)	\
    (This)->lpVtbl -> put_SymbolRotation(This,SymbolRotation)

#define IVectorStyle_get_LineWidth(This,LineWidth)	\
    (This)->lpVtbl -> get_LineWidth(This,LineWidth)

#define IVectorStyle_put_LineWidth(This,LineWidth)	\
    (This)->lpVtbl -> put_LineWidth(This,LineWidth)

#define IVectorStyle_get_LineColor(This,LineColor)	\
    (This)->lpVtbl -> get_LineColor(This,LineColor)

#define IVectorStyle_put_LineColor(This,LineColor)	\
    (This)->lpVtbl -> put_LineColor(This,LineColor)

#define IVectorStyle_get_EnableOutline(This,EnableOutline)	\
    (This)->lpVtbl -> get_EnableOutline(This,EnableOutline)

#define IVectorStyle_put_EnableOutline(This,EnableOutline)	\
    (This)->lpVtbl -> put_EnableOutline(This,EnableOutline)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_OutLineWidth_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ double *OutLineWidth);


void __RPC_STUB IVectorStyle_get_OutLineWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_OutLineWidth_Proxy( 
    IVectorStyle * This,
    /* [in] */ double OutLineWidth);


void __RPC_STUB IVectorStyle_put_OutLineWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_OutLineColor_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ long *OutLineColor);


void __RPC_STUB IVectorStyle_get_OutLineColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_OutLineColor_Proxy( 
    IVectorStyle * This,
    /* [in] */ long OutLineColor);


void __RPC_STUB IVectorStyle_put_OutLineColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_FillColor_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ long *FillColor);


void __RPC_STUB IVectorStyle_get_FillColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_FillColor_Proxy( 
    IVectorStyle * This,
    /* [in] */ long FillColor);


void __RPC_STUB IVectorStyle_put_FillColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_SymbolUrl_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ BSTR *SymbolUrl);


void __RPC_STUB IVectorStyle_get_SymbolUrl_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_SymbolUrl_Proxy( 
    IVectorStyle * This,
    /* [in] */ BSTR SymbolUrl);


void __RPC_STUB IVectorStyle_put_SymbolUrl_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_SymbolScale_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ double *SymbolScale);


void __RPC_STUB IVectorStyle_get_SymbolScale_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_SymbolScale_Proxy( 
    IVectorStyle * This,
    /* [in] */ double SymbolScale);


void __RPC_STUB IVectorStyle_put_SymbolScale_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_SymbolRotation_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ double *SymbolRotation);


void __RPC_STUB IVectorStyle_get_SymbolRotation_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_SymbolRotation_Proxy( 
    IVectorStyle * This,
    /* [in] */ double SymbolRotation);


void __RPC_STUB IVectorStyle_put_SymbolRotation_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_LineWidth_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ double *LineWidth);


void __RPC_STUB IVectorStyle_get_LineWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_LineWidth_Proxy( 
    IVectorStyle * This,
    /* [in] */ double LineWidth);


void __RPC_STUB IVectorStyle_put_LineWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_LineColor_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ long *LineColor);


void __RPC_STUB IVectorStyle_get_LineColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_LineColor_Proxy( 
    IVectorStyle * This,
    /* [in] */ long LineColor);


void __RPC_STUB IVectorStyle_put_LineColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IVectorStyle_get_EnableOutline_Proxy( 
    IVectorStyle * This,
    /* [retval][out] */ BOOL *EnableOutline);


void __RPC_STUB IVectorStyle_get_EnableOutline_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IVectorStyle_put_EnableOutline_Proxy( 
    IVectorStyle * This,
    /* [in] */ BOOL EnableOutline);


void __RPC_STUB IVectorStyle_put_EnableOutline_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IVectorStyle_INTERFACE_DEFINED__ */


#ifndef __IMap_INTERFACE_DEFINED__
#define __IMap_INTERFACE_DEFINED__

/* interface IMap */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IMap;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("01D6758D-DE86-4bb4-9F1D-E7EA914D4378")
    IMap : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BackColor( 
            /* [retval][out] */ long *BackColor) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BackColor( 
            /* [in] */ long BackColor) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Center( 
            /* [retval][out] */ IPoint **Center) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Center( 
            /* [in] */ IPoint *Center) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Envelope( 
            /* [retval][out] */ IBoundingBox **Envelope) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Layers( 
            /* [retval][out] */ ILayers **Layers) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Layers( 
            /* [in] */ ILayers *Layers) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MapHeight( 
            /* [retval][out] */ double *MapHeight) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MapWidth( 
            /* [retval][out] */ double *MapWidth) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaximumZoom( 
            /* [retval][out] */ double *MaximumZoom) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaximumZoom( 
            /* [in] */ double MaximumZoom) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinimumZoom( 
            /* [retval][out] */ double *MinimumZoom) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinimumZoom( 
            /* [in] */ double MinimumZoom) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_HPaintWnd( 
            /* [retval][out] */ long *HPaintWnd) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_HPaintWnd( 
            /* [in] */ long HPaintWnd) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PixelAspectRatio( 
            /* [retval][out] */ double *PixelAspectRatio) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PixelAspectRatio( 
            /* [in] */ double PixelAspectRatio) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PixelHeight( 
            /* [retval][out] */ double *PixelHeight) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PixelSize( 
            /* [retval][out] */ double *PixelSize) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Size( 
            /* [retval][out] */ MapSize *Size) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Size( 
            /* [in] */ MapSize Size) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Zoom( 
            /* [retval][out] */ double *Zoom) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Zoom( 
            /* [in] */ double Zoom) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE FindLayer( 
            /* [in] */ BSTR layerName) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetExtents( 
            /* [retval][out] */ IBoundingBox **boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetMap( 
            /* [retval][out] */ int *intRet) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ZoomToBox( 
            /* [in] */ IBoundingBox *boundingBox) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ZoomToExtents( 
            /* [retval][out] */ BOOL *isSuccess) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ImageToWorld( 
            /* [in] */ PointFloat ptf,
            /* [retval][out] */ IPoint **point) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WorldToImage( 
            /* [in] */ IPoint *point,
            /* [retval][out] */ PointFloat *ptf) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE DrawMapImage( 
            /* [in] */ long hdc) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PixelWidth( 
            /* [retval][out] */ double *PixelWidth) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Refesh( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMapVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMap * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMap * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMap * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IMap * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IMap * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IMap * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IMap * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BackColor )( 
            IMap * This,
            /* [retval][out] */ long *BackColor);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BackColor )( 
            IMap * This,
            /* [in] */ long BackColor);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Center )( 
            IMap * This,
            /* [retval][out] */ IPoint **Center);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Center )( 
            IMap * This,
            /* [in] */ IPoint *Center);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Envelope )( 
            IMap * This,
            /* [retval][out] */ IBoundingBox **Envelope);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Layers )( 
            IMap * This,
            /* [retval][out] */ ILayers **Layers);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Layers )( 
            IMap * This,
            /* [in] */ ILayers *Layers);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MapHeight )( 
            IMap * This,
            /* [retval][out] */ double *MapHeight);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MapWidth )( 
            IMap * This,
            /* [retval][out] */ double *MapWidth);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaximumZoom )( 
            IMap * This,
            /* [retval][out] */ double *MaximumZoom);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaximumZoom )( 
            IMap * This,
            /* [in] */ double MaximumZoom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinimumZoom )( 
            IMap * This,
            /* [retval][out] */ double *MinimumZoom);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinimumZoom )( 
            IMap * This,
            /* [in] */ double MinimumZoom);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HPaintWnd )( 
            IMap * This,
            /* [retval][out] */ long *HPaintWnd);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_HPaintWnd )( 
            IMap * This,
            /* [in] */ long HPaintWnd);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PixelAspectRatio )( 
            IMap * This,
            /* [retval][out] */ double *PixelAspectRatio);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PixelAspectRatio )( 
            IMap * This,
            /* [in] */ double PixelAspectRatio);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PixelHeight )( 
            IMap * This,
            /* [retval][out] */ double *PixelHeight);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PixelSize )( 
            IMap * This,
            /* [retval][out] */ double *PixelSize);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Size )( 
            IMap * This,
            /* [retval][out] */ MapSize *Size);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Size )( 
            IMap * This,
            /* [in] */ MapSize Size);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Zoom )( 
            IMap * This,
            /* [retval][out] */ double *Zoom);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Zoom )( 
            IMap * This,
            /* [in] */ double Zoom);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *FindLayer )( 
            IMap * This,
            /* [in] */ BSTR layerName);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetExtents )( 
            IMap * This,
            /* [retval][out] */ IBoundingBox **boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetMap )( 
            IMap * This,
            /* [retval][out] */ int *intRet);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ZoomToBox )( 
            IMap * This,
            /* [in] */ IBoundingBox *boundingBox);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ZoomToExtents )( 
            IMap * This,
            /* [retval][out] */ BOOL *isSuccess);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ImageToWorld )( 
            IMap * This,
            /* [in] */ PointFloat ptf,
            /* [retval][out] */ IPoint **point);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WorldToImage )( 
            IMap * This,
            /* [in] */ IPoint *point,
            /* [retval][out] */ PointFloat *ptf);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DrawMapImage )( 
            IMap * This,
            /* [in] */ long hdc);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PixelWidth )( 
            IMap * This,
            /* [retval][out] */ double *PixelWidth);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refesh )( 
            IMap * This);
        
        END_INTERFACE
    } IMapVtbl;

    interface IMap
    {
        CONST_VTBL struct IMapVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMap_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IMap_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IMap_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IMap_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IMap_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IMap_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IMap_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IMap_get_BackColor(This,BackColor)	\
    (This)->lpVtbl -> get_BackColor(This,BackColor)

#define IMap_put_BackColor(This,BackColor)	\
    (This)->lpVtbl -> put_BackColor(This,BackColor)

#define IMap_get_Center(This,Center)	\
    (This)->lpVtbl -> get_Center(This,Center)

#define IMap_put_Center(This,Center)	\
    (This)->lpVtbl -> put_Center(This,Center)

#define IMap_get_Envelope(This,Envelope)	\
    (This)->lpVtbl -> get_Envelope(This,Envelope)

#define IMap_get_Layers(This,Layers)	\
    (This)->lpVtbl -> get_Layers(This,Layers)

#define IMap_put_Layers(This,Layers)	\
    (This)->lpVtbl -> put_Layers(This,Layers)

#define IMap_get_MapHeight(This,MapHeight)	\
    (This)->lpVtbl -> get_MapHeight(This,MapHeight)

#define IMap_get_MapWidth(This,MapWidth)	\
    (This)->lpVtbl -> get_MapWidth(This,MapWidth)

#define IMap_get_MaximumZoom(This,MaximumZoom)	\
    (This)->lpVtbl -> get_MaximumZoom(This,MaximumZoom)

#define IMap_put_MaximumZoom(This,MaximumZoom)	\
    (This)->lpVtbl -> put_MaximumZoom(This,MaximumZoom)

#define IMap_get_MinimumZoom(This,MinimumZoom)	\
    (This)->lpVtbl -> get_MinimumZoom(This,MinimumZoom)

#define IMap_put_MinimumZoom(This,MinimumZoom)	\
    (This)->lpVtbl -> put_MinimumZoom(This,MinimumZoom)

#define IMap_get_HPaintWnd(This,HPaintWnd)	\
    (This)->lpVtbl -> get_HPaintWnd(This,HPaintWnd)

#define IMap_put_HPaintWnd(This,HPaintWnd)	\
    (This)->lpVtbl -> put_HPaintWnd(This,HPaintWnd)

#define IMap_get_PixelAspectRatio(This,PixelAspectRatio)	\
    (This)->lpVtbl -> get_PixelAspectRatio(This,PixelAspectRatio)

#define IMap_put_PixelAspectRatio(This,PixelAspectRatio)	\
    (This)->lpVtbl -> put_PixelAspectRatio(This,PixelAspectRatio)

#define IMap_get_PixelHeight(This,PixelHeight)	\
    (This)->lpVtbl -> get_PixelHeight(This,PixelHeight)

#define IMap_get_PixelSize(This,PixelSize)	\
    (This)->lpVtbl -> get_PixelSize(This,PixelSize)

#define IMap_get_Size(This,Size)	\
    (This)->lpVtbl -> get_Size(This,Size)

#define IMap_put_Size(This,Size)	\
    (This)->lpVtbl -> put_Size(This,Size)

#define IMap_get_Zoom(This,Zoom)	\
    (This)->lpVtbl -> get_Zoom(This,Zoom)

#define IMap_put_Zoom(This,Zoom)	\
    (This)->lpVtbl -> put_Zoom(This,Zoom)

#define IMap_FindLayer(This,layerName)	\
    (This)->lpVtbl -> FindLayer(This,layerName)

#define IMap_GetExtents(This,boundingBox)	\
    (This)->lpVtbl -> GetExtents(This,boundingBox)

#define IMap_GetMap(This,intRet)	\
    (This)->lpVtbl -> GetMap(This,intRet)

#define IMap_ZoomToBox(This,boundingBox)	\
    (This)->lpVtbl -> ZoomToBox(This,boundingBox)

#define IMap_ZoomToExtents(This,isSuccess)	\
    (This)->lpVtbl -> ZoomToExtents(This,isSuccess)

#define IMap_ImageToWorld(This,ptf,point)	\
    (This)->lpVtbl -> ImageToWorld(This,ptf,point)

#define IMap_WorldToImage(This,point,ptf)	\
    (This)->lpVtbl -> WorldToImage(This,point,ptf)

#define IMap_DrawMapImage(This,hdc)	\
    (This)->lpVtbl -> DrawMapImage(This,hdc)

#define IMap_get_PixelWidth(This,PixelWidth)	\
    (This)->lpVtbl -> get_PixelWidth(This,PixelWidth)

#define IMap_Refesh(This)	\
    (This)->lpVtbl -> Refesh(This)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_BackColor_Proxy( 
    IMap * This,
    /* [retval][out] */ long *BackColor);


void __RPC_STUB IMap_get_BackColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_BackColor_Proxy( 
    IMap * This,
    /* [in] */ long BackColor);


void __RPC_STUB IMap_put_BackColor_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_Center_Proxy( 
    IMap * This,
    /* [retval][out] */ IPoint **Center);


void __RPC_STUB IMap_get_Center_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_Center_Proxy( 
    IMap * This,
    /* [in] */ IPoint *Center);


void __RPC_STUB IMap_put_Center_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_Envelope_Proxy( 
    IMap * This,
    /* [retval][out] */ IBoundingBox **Envelope);


void __RPC_STUB IMap_get_Envelope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_Layers_Proxy( 
    IMap * This,
    /* [retval][out] */ ILayers **Layers);


void __RPC_STUB IMap_get_Layers_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_Layers_Proxy( 
    IMap * This,
    /* [in] */ ILayers *Layers);


void __RPC_STUB IMap_put_Layers_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_MapHeight_Proxy( 
    IMap * This,
    /* [retval][out] */ double *MapHeight);


void __RPC_STUB IMap_get_MapHeight_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_MapWidth_Proxy( 
    IMap * This,
    /* [retval][out] */ double *MapWidth);


void __RPC_STUB IMap_get_MapWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_MaximumZoom_Proxy( 
    IMap * This,
    /* [retval][out] */ double *MaximumZoom);


void __RPC_STUB IMap_get_MaximumZoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_MaximumZoom_Proxy( 
    IMap * This,
    /* [in] */ double MaximumZoom);


void __RPC_STUB IMap_put_MaximumZoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_MinimumZoom_Proxy( 
    IMap * This,
    /* [retval][out] */ double *MinimumZoom);


void __RPC_STUB IMap_get_MinimumZoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_MinimumZoom_Proxy( 
    IMap * This,
    /* [in] */ double MinimumZoom);


void __RPC_STUB IMap_put_MinimumZoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_HPaintWnd_Proxy( 
    IMap * This,
    /* [retval][out] */ long *HPaintWnd);


void __RPC_STUB IMap_get_HPaintWnd_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_HPaintWnd_Proxy( 
    IMap * This,
    /* [in] */ long HPaintWnd);


void __RPC_STUB IMap_put_HPaintWnd_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_PixelAspectRatio_Proxy( 
    IMap * This,
    /* [retval][out] */ double *PixelAspectRatio);


void __RPC_STUB IMap_get_PixelAspectRatio_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_PixelAspectRatio_Proxy( 
    IMap * This,
    /* [in] */ double PixelAspectRatio);


void __RPC_STUB IMap_put_PixelAspectRatio_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_PixelHeight_Proxy( 
    IMap * This,
    /* [retval][out] */ double *PixelHeight);


void __RPC_STUB IMap_get_PixelHeight_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_PixelSize_Proxy( 
    IMap * This,
    /* [retval][out] */ double *PixelSize);


void __RPC_STUB IMap_get_PixelSize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_Size_Proxy( 
    IMap * This,
    /* [retval][out] */ MapSize *Size);


void __RPC_STUB IMap_get_Size_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_Size_Proxy( 
    IMap * This,
    /* [in] */ MapSize Size);


void __RPC_STUB IMap_put_Size_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_Zoom_Proxy( 
    IMap * This,
    /* [retval][out] */ double *Zoom);


void __RPC_STUB IMap_get_Zoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMap_put_Zoom_Proxy( 
    IMap * This,
    /* [in] */ double Zoom);


void __RPC_STUB IMap_put_Zoom_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_FindLayer_Proxy( 
    IMap * This,
    /* [in] */ BSTR layerName);


void __RPC_STUB IMap_FindLayer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_GetExtents_Proxy( 
    IMap * This,
    /* [retval][out] */ IBoundingBox **boundingBox);


void __RPC_STUB IMap_GetExtents_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_GetMap_Proxy( 
    IMap * This,
    /* [retval][out] */ int *intRet);


void __RPC_STUB IMap_GetMap_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_ZoomToBox_Proxy( 
    IMap * This,
    /* [in] */ IBoundingBox *boundingBox);


void __RPC_STUB IMap_ZoomToBox_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_ZoomToExtents_Proxy( 
    IMap * This,
    /* [retval][out] */ BOOL *isSuccess);


void __RPC_STUB IMap_ZoomToExtents_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_ImageToWorld_Proxy( 
    IMap * This,
    /* [in] */ PointFloat ptf,
    /* [retval][out] */ IPoint **point);


void __RPC_STUB IMap_ImageToWorld_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_WorldToImage_Proxy( 
    IMap * This,
    /* [in] */ IPoint *point,
    /* [retval][out] */ PointFloat *ptf);


void __RPC_STUB IMap_WorldToImage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_DrawMapImage_Proxy( 
    IMap * This,
    /* [in] */ long hdc);


void __RPC_STUB IMap_DrawMapImage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMap_get_PixelWidth_Proxy( 
    IMap * This,
    /* [retval][out] */ double *PixelWidth);


void __RPC_STUB IMap_get_PixelWidth_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMap_Refesh_Proxy( 
    IMap * This);


void __RPC_STUB IMap_Refesh_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMap_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 

unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long *, unsigned long            , VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsigned char *, VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree(     unsigned long *, VARIANT * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


